JP4424008B2 - Program, data processing apparatus and method thereof - Google Patents

Program, data processing apparatus and method thereof Download PDF

Info

Publication number
JP4424008B2
JP4424008B2 JP2004059650A JP2004059650A JP4424008B2 JP 4424008 B2 JP4424008 B2 JP 4424008B2 JP 2004059650 A JP2004059650 A JP 2004059650A JP 2004059650 A JP2004059650 A JP 2004059650A JP 4424008 B2 JP4424008 B2 JP 4424008B2
Authority
JP
Japan
Prior art keywords
node
data
processing
execution
nodes
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.)
Expired - Fee Related
Application number
JP2004059650A
Other languages
Japanese (ja)
Other versions
JP2005250799A (en
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2004059650A priority Critical patent/JP4424008B2/en
Publication of JP2005250799A publication Critical patent/JP2005250799A/en
Application granted granted Critical
Publication of JP4424008B2 publication Critical patent/JP4424008B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Description

本発明は、3次元コンピュータグラフィックスなどに用いられるプログラム、データ処理装置およびその方法に関する。   The present invention relates to a program, a data processing apparatus, and a method used for three-dimensional computer graphics and the like.

3次元コンピュータグラフィックス(3-Dimensional Computer Graphics 以下、3D−CGと記す)は、空間や立体など3次元の存在を数値で表現し、計算によってコンピュータの画面に投影して描画を行う技術である。
またリアルタイム3D−CGは、ユーザが認識できない程の速さで連続的に上記の描画を行うことによってアニメーションを実現する技術であり、ゲームやバーチャルリアリティといった分野で広く利用されている。さらに今後は携帯電話をはじめとしたモバイル機器やセットトップボックス等の家電製品においてもリアルタイム3D−CGを用いたアプリケーションが広く普及すると考えられている。
3D computer graphics (3-Dimensional Computer Graphics, hereinafter referred to as 3D-CG) is a technology that expresses a 3D presence such as a space or a solid as a numerical value, and projects and draws it on a computer screen by calculation. .
Real-time 3D-CG is a technique for realizing animation by continuously performing the above drawing at a speed that cannot be recognized by the user, and is widely used in fields such as games and virtual reality. Further, in the future, it is considered that applications using real-time 3D-CG will be widely used in mobile devices such as mobile phones and home appliances such as set-top boxes.

リアルタイム3D−CGを行うには一般に高いコンピュータ処理能力が必要とされるが、最近ではCPU(Central Processing Unit) で全ての処理を行うのではなく、3D−CGの計算処理を専用に行うグラフィックスハードウエアを併用することで動作速度を向上させることが一般的になっている。
こうしたグラフィックスハードウエアの機能はMicrosoft社のDirectX Graphicsや標準化団体ARB(OpenGL Architecture Review Board)が標準化作業を行っているOpenGLといったAPI(Application Program Interface)を介してアプリケーションから利用することができるが、これらのAPIはハードウエアを操作するための抽象度の低いコマンドの集合であり、これらのAPIを利用したプログラミングには高いスキルが必要である。
このような状況に対し、プログラミングの生産性を向上させることを目的とした上位の(より抽象度の高い)ライブラリが開発されるようになった。それらの多くがシーングラフデータと呼ばれる機能をサポートしている。シーングラフデータとは描画対象となる3次元空間のオブジェクト群をツリー構造のデータとして表現したものである。シーングラフを採用した3D−CGライブラリの例としてSGI社のOpenInventorやSun Microsystems社のJava3Dが挙げられる。
一般にこれらのライブラリでは、アプリケーションは描画したい3Dモデルをシーングラフとして構築し、その描画はライブラリ側で行うことによってプログラミングの煩雑さを軽減している。以降、3Dモデルをデータ構造として構築する作業をモデリングと称し、またそれを実際に描画する処理をレンダリングと称する。
In order to perform real-time 3D-CG, a high computer processing capability is generally required. Recently, however, not all processing is performed by a CPU (Central Processing Unit), but graphics that exclusively perform 3D-CG calculation processing. It has become common to improve the operation speed by using hardware together.
These graphics hardware functions can be used from applications via API (Application Program Interface) such as Microsoft's DirectX Graphics and OpenGL Architecture Review Board (ARB), which is standardizing work. These APIs are a set of commands having a low abstraction level for operating hardware, and programming using these APIs requires high skills.
In this situation, higher-level (higher-level abstraction) libraries aimed at improving programming productivity have been developed. Many of them support a function called scene graph data. Scene graph data represents a group of objects in a three-dimensional space to be rendered as tree structure data. Examples of 3D-CG libraries that employ scene graphs include OpenInventor from SGI and Java3D from Sun Microsystems.
Generally, in these libraries, an application constructs a 3D model to be drawn as a scene graph, and drawing is performed on the library side, thereby reducing the complexity of programming. Hereinafter, the operation of constructing the 3D model as a data structure is referred to as modeling, and the process of actually drawing it is referred to as rendering.

一方で、上述したようなシーングラフデータではノードの描画順が指定できない。多くのグラフィックスハードウエアでは、半透明の物体が重なり合う場合に、視点から遠い順に描画しないと正しい画像が得られないため、このことは大きな制約となる。
そこでノードの描画順位に関する優先度を持ったシーングラフデータが開発されるようになった。そのようなシーングラフをサポートしたライブラリの例として、標準化団体JCP(Java Community Process)が標準化を行っているMobile 3D Graphics API (JSR-184)等が挙げられる。
JSR-184では各ノードがレイヤー値と呼ばれる整数値を持っており、シーングラフデータ中の位置に関係なく、その値が小さいものから順に描画が行われる。レイヤーの利用法の例として、シーングラフ中で背景を表現するノード群には小さな値(例えば「−1」)を割り当てる、などといった使い方が考えられる。
On the other hand, the drawing order of nodes cannot be specified in the scene graph data as described above. In many graphics hardware, when semi-transparent objects overlap, a correct image cannot be obtained unless the objects are drawn in order from the viewpoint, which is a great limitation.
Therefore, scene graph data with priority on the drawing order of nodes has been developed. An example of a library that supports such a scene graph is Mobile 3D Graphics API (JSR-184) that is being standardized by the standardization organization JCP (Java Community Process).
In JSR-184, each node has an integer value called a layer value, and drawing is performed in order from the smallest value regardless of the position in the scene graph data. As an example of the usage method of the layer, a usage such as assigning a small value (for example, “−1”) to the node group expressing the background in the scene graph can be considered.

このようなシーングラフデータを基にした従来のシステムでは、例えば、CPUが、各レイヤー値の描画を行う度に、シーングラフデータを構成する全てのノードをトラバース(走査)して、当該レイヤー値が割り当てられたノードを探索し、当該探索したノードについて描画処理を行っている。   In a conventional system based on such scene graph data, for example, every time the CPU draws each layer value, it traverses (scans) all the nodes constituting the scene graph data, and the layer value Is searched for, and a drawing process is performed on the searched node.

しかしながら、上述した従来のシステムでは、CPUが、各レイヤー値の描画を行う度に、シーングラフデータを構成する全てのノードをトラバースするため、処理量が多くなり、処理時間が長いという問題がある。   However, in the conventional system described above, every time the layer value is drawn, the CPU traverses all the nodes constituting the scene graph data, which causes a problem that the processing amount increases and the processing time is long. .

本発明は、上述した従来技術の問題点に鑑みてなされ、ツリーを構成する複数のノードに処理が割り当てられ、前記ノードの各々に、当該ノードに割り当てられた前記処理を複数の処理段階のうち何れの前記処理段階で実行するかを示す実行段階データが対応付けられ、前記複数の処理段階を順に選択し、当該選択された処理段階で、当該選択された処理段階を示す前記実行段階データに対応付けられた前記ノードに割り当てられた前記処理が実行されるように制御する場合に、処理量の削減、並びに処理時間の短縮が図れるプログラム、データ処理装置およびその方法を提供することを目的とする。   The present invention has been made in view of the above-mentioned problems of the prior art, and processing is assigned to a plurality of nodes constituting a tree, and the processing assigned to the node is assigned to each of the nodes among a plurality of processing stages. Execution stage data indicating which process stage is executed is associated, the plurality of process stages are selected in order, and the execution stage data indicating the selected process stage is selected in the selected process stage. An object of the present invention is to provide a program, a data processing apparatus, and a method thereof that can reduce the amount of processing and the processing time when performing control so that the processing assigned to the associated node is executed. To do.

第1の発明のプログラムは、ツリーを構成する複数のノードに描画処理が割り当てられ、前記ノードの各々に、当該ノードに割り当てられた前記描画処理を複数の処理段階のうち何れの前記処理段階で実行するかを示す実行段階データが対応付けられ、前記複数の処理段階を順に選択し、当該選択された処理段階で、当該選択された処理段階を示す前記実行段階データに対応付けられた前記ノードに割り当てられた前記描画処理が実行されるように制御するデータ処理装置が実行するプログラムであって、前記データ処理装置は、前記描画処理の前処理を行う前処理手段と、前記描画処理を実行する実行制御手段と、を有し、前記前処理手段が、前記実行段階データを基に、前記ツリーを構成する前記複数のノードのうち少なくとも前記ツリー上で下層ノードが存在するノードの各々について、前記選択された処理段階で前記下層ノードの描画処理を実行するか否かを示す指標データを当該ノードに対応付ける第1の手順と、前記実行制御手段が、前記複数の処理段階を順に選択し、当該選択した処理段階において、前記ツリーをルートノードからリーフノードに向けて探索し、当該探索の過程でノードに達すると、当該ノードに前記第1の手順で対応付けられた前記指標データが当該選択された処理段階において前記下層ノードの描画処理を実行することを示している場合には、当該ノードの前記下層ノードを探索し、前記探索によって達したノードのうち、当該ノードに対応付けられた前記実行段階データが前記選択した処理段階を示す前記ノードに割り当てられた描画処理の実行開始を決定し、前記下層ノードの描画処理を実行することを示していない場合には、当該ノードの前記下層ノードの探索をスキップする第2の手順と、を前記データ処理装置に実行させる。 Program of the first invention, the drawing process to a plurality of nodes constituting the tree is assigned, to each of the nodes, the drawing processing assigned to the node in any of the processing stages of the plurality of processing stages Execution stage data indicating whether or not to execute is associated, the plurality of processing stages are selected in order, and the node associated with the execution stage data indicating the selected processing stage in the selected processing stage A program executed by a data processing device that controls the drawing processing assigned to the data processing device, wherein the data processing device executes pre-processing means for pre-processing the drawing processing, and executes the drawing processing. It has an execution control means for the said preprocessing means, based on the execution stage data, at least the tree of the plurality of nodes constituting the tree For each node where the lower node on a first procedure for associating the index data indicating whether or not to execute the drawing process of the lower layer node by the selected processing stage to the node, the execution control unit but selecting the plurality of processing stages in order, in the selected process step, the tree from the root node to the search towards the leaf nodes, and reaches the node in the process of the search, the first to the node if the indicator data associated with the procedure indicates that executes the drawing process of the lower layer node in the selected process step, searches said lower node of the node reached by the search among the nodes, the drawing process the execution stage data associated with the node allocated to the node indicating the selected processing stage Determining the line start, if not indicated to perform the drawing process of the lower layer node to execute the second procedure to skip search for the lower nodes of the node, to the data processing device.

第2の発明のデータ処理装置は、ツリーを構成する複数のノードに描画処理が割り当てられ、前記ノードの各々に、当該ノードに割り当てられた前記描画処理を複数の処理段階のうち何れの前記処理段階で実行するかを示す実行段階データが対応付けられ、前記複数の処理段階を順に選択し、当該選択された処理段階で、当該選択された処理段階を示す前記実行段階データに対応付けられた前記ノードに割り当てられた前記描画処理が実行されるように制御するデータ処理装置であって、前記実行段階データを基に、前記ツリーを構成する前記複数のノードのうち少なくとも前記ツリー上で下層ノードが存在するノードの各々について、前記選択された処理段階で前記下層ノードの描画処理を実行するか否かを示す指標データを当該ノードに対応付ける前処理手段と、前記複数の処理段階を順に選択し、当該選択した処理段階において、前記ツリーをルートノードからリーフノードに向けて探索し、当該探索の過程でノードに達すると、前記前処理手段が当該ノードに対応付けた前記指標データが当該選択された処理段階において前記下層ノードの描画処理を実行することを示している場合には、当該ノードの前記下層ノードを探索し、前記探索によって達したノードのうち、当該ノードに対応付けられた前記実行段階データが前記選択した処理段階を示す前記ノードに割り当てられた描画処理の実行開始を決定し、前記下層ノードの描画処理を実行することを示していない場合には、当該ノードの前記下層ノードの探索をスキップする実行制御手段と、を有する。In the data processing device of the second invention, a drawing process is assigned to a plurality of nodes constituting a tree, and the drawing process assigned to the node is assigned to each of the nodes. Execution stage data indicating whether to execute in stages is associated, the plurality of processing stages are sequentially selected, and the selected processing stage is associated with the execution stage data indicating the selected processing stage. A data processing device for controlling the drawing process assigned to the node to be executed, wherein a lower layer node on at least the tree among the plurality of nodes constituting the tree based on the execution stage data For each of the nodes in which there is an index data indicating whether to execute the drawing processing of the lower layer node in the selected processing stage The preprocessing means to be applied and the plurality of processing stages are selected in order, and in the selected processing stage, the tree is searched from the root node toward the leaf node. When the processing unit indicates that the index data associated with the node performs the drawing process of the lower layer node in the selected processing stage, the lower layer node of the node is searched, and the search The execution stage data associated with the node is determined to start the drawing process assigned to the node indicating the selected processing stage, and the drawing process of the lower layer node is executed. If it does not indicate that, the execution control means for skipping the search for the lower node of the node.

第3の発明のデータ処理方法は、ツリーを構成する複数のノードに描画処理が割り当てられ、前記ノードの各々に、当該ノードに割り当てられた前記描画処理を複数の処理段階のうち何れの前記処理段階で実行するかを示す実行段階データが対応付けられ、前記複数の処理段階を順に選択し、当該選択された処理段階で、当該選択された処理段階を示す前記実行段階データに対応付けられた前記ノードに割り当てられた前記描画処理が実行されるようにデータ処理装置が制御するデータ処理方法であって、前記データ処理装置は、前記描画処理の前処理を行う前処理手段と、前記描画処理を実行する実行制御手段と、を有し、前記前処理手段が、前記実行段階データを基に、前記ツリーを構成する前記複数のノードのうち少なくとも前記ツリー上で下層ノードが存在するノードの各々について、前記選択された処理段階で前記下層ノードの処理を実行するか否かを示す指標データを当該ノードに対応付ける第1の工程と、前記実行制御手段が、前記複数の処理段階を順に選択し、当該選択した処理段階において、前記ツリーをルートノードからリーフノードに向けて探索し、当該探索の過程でノードに達すると、当該ノードに前記第1の工程で対応付けられた前記指標データが当該選択された処理段階において前記下層ノードの描画処理を実行することを示している場合には、当該ノードの前記下層ノードを探索し、前記探索によって達したノードのうち、当該ノードに対応付けられた前記実行段階データが前記選択した処理段階を示す前記ノードに割り当てられた描画処理の実行開始を決定し、前記下層ノードの描画処理を実行することを示していない場合には、当該ノードの前記下層ノードの探索をスキップする第2の工程と、を有する。In a data processing method according to a third aspect of the present invention, a drawing process is assigned to a plurality of nodes constituting a tree, and the drawing process assigned to the node is assigned to each of the nodes. Execution stage data indicating whether to execute in stages is associated, the plurality of processing stages are sequentially selected, and the selected processing stage is associated with the execution stage data indicating the selected processing stage. A data processing method controlled by a data processing apparatus so that the drawing process assigned to the node is executed, wherein the data processing apparatus includes pre-processing means for performing pre-processing of the drawing process, and the drawing process Execution control means for executing, and based on the execution stage data, the preprocessing means at least the tree among the plurality of nodes constituting the tree. A first step of associating index data indicating whether or not the processing of the lower layer node is executed in the selected processing stage with respect to each of the nodes having lower layer nodes, and the execution control means; The plurality of processing stages are selected in order, and in the selected processing stage, the tree is searched from a root node toward a leaf node, and when the node is reached in the search process, the first process is performed on the node. If the index data associated in step (b) indicates that the drawing process of the lower layer node is to be executed in the selected processing stage, the lower node of the node is searched, and the node reached by the search The execution stage data associated with the node is the drawing process assigned to the node indicating the selected processing stage Determining the start, if not indicate that executes the drawing process of the lower layer node has a second step of skipping the searching of the lower nodes of the node, the.

本発明によれば、ツリーを構成する複数のノードに処理が割り当てられ、前記ノードの各々に、当該ノードに割り当てられた前記処理を複数の処理段階のうち何れの前記処理段階で実行するかを示す実行段階データが対応付けられ、前記複数の処理段階を順に選択し、当該選択された処理段階で、当該選択された処理段階を示す前記実行段階データに対応付けられた前記ノードに割り当てられた前記処理が実行されるように制御する場合に、処理量の削減、並びに処理時間の短縮が図れるプログラム、データ処理装置およびその方法を提供することができる。   According to the present invention, a process is assigned to a plurality of nodes constituting a tree, and in each of the nodes, the process assigned to the node is executed in which of the plurality of process stages. The execution stage data shown is associated, the plurality of processing stages are selected in order, and the selected processing stage is assigned to the node associated with the execution stage data indicating the selected processing stage When performing control so that the processing is executed, it is possible to provide a program, a data processing apparatus, and a method thereof that can reduce the amount of processing and the processing time.

以下、本発明の実施の形態を図面を参照しながら説明する。
<本発明の関連技術>
本発明の実施形態を説明する前に、本発明の関連技術を説明する。
図1は、シーングラフデータの一例を模式的に表した図である。
このシーングラフデータはロボットのモデルを表現したものである。
図1中、各ノードは円で表現されており、ルートノードrootを基点としてツリーを構成している。
各ノードにはロボットの構成部品の形状や外観データ、及びモデル変換(位置、姿勢、拡大縮尺)に関する情報が含まれている。
これら各ノードが保有している情報のうち、モデル変換はルートから末端へ向かって階層的に定義され、あるノードが保持している位置、姿勢、拡大縮尺の値は、その親ノードを基点としたものである。
従って、例えば図1において、最終的にロボットの右手が描画される3次元空間上の位置は、「ノードtorsoの位置+ノードright_armの位置+ノードright_handの位置」として表現される。
実際には、各ノードのモデル変換は4x4の行列Mで表現され、ノードright_handが描画される位置、姿勢、拡大縮小は、「M(torso)・M(right_arm)・M(right_hand)」という行列演算で規定できる。
Embodiments of the present invention will be described below with reference to the drawings.
<Related art of the present invention>
Prior to describing embodiments of the present invention, the related art of the present invention will be described.
FIG. 1 is a diagram schematically showing an example of scene graph data.
This scene graph data represents a robot model.
In FIG. 1, each node is represented by a circle, and a tree is configured with the root node root as a base point.
Each node includes information on the shape and appearance data of the components of the robot and model conversion (position, posture, and enlarged scale).
Among the information held by each node, model transformation is defined hierarchically from the root to the end, and the position, posture, and scaled value held by a node are based on its parent node. It is a thing.
Therefore, for example, in FIG. 1, the position in the three-dimensional space where the right hand of the robot is finally drawn is expressed as “the position of the node torso + the position of the node right_arm + the position of the node right_hand”.
Actually, the model transformation of each node is expressed by a 4 × 4 matrix M, and the position, orientation, and enlargement / reduction at which the node right_hand is drawn are “M (torso) · M (right_arm) · M (right_hand)”. Can be defined by calculation.

このような行列の乗算は前述したグラフィックスハードウエアがサポートするのに適しており、処理の高速化が期待できる。
実際のシーングラフデータのレンダリングにおいては、ルートからリーフ(ツリーの末端)へ向かってツリーを走査(以下トラバースと称する)しながら上記の行列の乗算を積み重ねていけば、各ノードのモデル変換を求めることができ、効率がよい。
Such matrix multiplication is suitable to be supported by the above-described graphics hardware, and high-speed processing can be expected.
In actual scene graph data rendering, if the above matrix multiplication is repeated while scanning the tree from the root toward the leaf (the end of the tree) (hereinafter referred to as traverse), the model conversion of each node is obtained. Can be efficient.

図2は、図1のシーングラフデータをトラバースする様子を模式的に示したものである。
図中の矢印に沿ってシーングラフデータを走査していく。ノードを表す円の中の数字はノードが描画される順番を表している。
このような階層構造で3次元空間を構成することには、モデリングを容易にする効果がある。
例えばロボットの肩を回転させるにはノードright_armの姿勢情報のみを更新すればよく、ノードright_handの位置、姿勢情報を再計算する必要はない。
FIG. 2 schematically shows how the scene graph data of FIG. 1 is traversed.
The scene graph data is scanned along the arrows in the figure. The numbers in the circles representing the nodes represent the order in which the nodes are drawn.
Constructing a three-dimensional space with such a hierarchical structure has an effect of facilitating modeling.
For example, in order to rotate the shoulder of the robot, only the posture information of the node right_arm needs to be updated, and there is no need to recalculate the position and posture information of the node right_hand.

ところで、図1および図2に示すシーングラフデータは、図3に示すように、ルートノードroot、ブランチノード101〜110とリーフノード121〜130とを用いて表現されることが多い。   Incidentally, the scene graph data shown in FIGS. 1 and 2 is often expressed using a root node root, branch nodes 101 to 110, and leaf nodes 121 to 130, as shown in FIG.

図3に示すシーングラフデータでは、例えば、リーフノード130に胴体の外観を規定する画像オブジェクトtorsoが割り当てられ、ブランチノード101に画像オブジェクトtorsoの位置、姿勢および拡大縮小を規定する行列M(torso)が割り当てられる。
また、リーフノード121に右腕の外観を規定する画像オブジェクトright_armが割り当てられ、ブランチノード102に画像オブジェクトright_armの位置、姿勢および拡大・縮小を規定する行列M(right_arm)が割り当てられる。
また、リーフノード122に右手の外観を規定する画像オブジェクトright_handが割り当てられ、ブランチノード103に画像オブジェクトright_handの位置、姿勢および拡大・縮小を規定する行列M(right_hand)が割り当てられる。
In the scene graph data shown in FIG. 3, for example, an image object torso that defines the appearance of the body is assigned to the leaf node 130, and a matrix M (torso) that defines the position, orientation, and enlargement / reduction of the image object torso to the branch node 101. Is assigned.
In addition, an image object right_arm that defines the appearance of the right arm is assigned to the leaf node 121, and a matrix M (right_arm) that defines the position, orientation, and enlargement / reduction of the image object right_arm is assigned to the branch node 102.
Further, an image object right_hand that defines the appearance of the right hand is assigned to the leaf node 122, and a matrix M (right_hand) that defines the position, orientation, and enlargement / reduction of the image object right_hand is assigned to the branch node 103.

このように、シーングラフデータを利用した3D−CGライブラリには、モデリングが容易で、レンダリングがライブラリによって効率的に行われるという利点がある。アプリケーションの設計者やプログラマは、どのような3D空間を表現するかに注力して開発を行うことができ、煩雑なレンダリングはライブラリに任せることができる。
ところで、上述したシーングラフデータではノードの描画順が指定できない。そのため、多くのグラフィックスハードウエアでは、半透明の物体が重なり合う場合に、視点から遠い順に描画しないと正しい画像が得られないため、このことは大きな制約となる。
そこでノードの描画順位に関する優先度を持ったシーングラフデータを用いる。
このようなシーングラフデータをサポートしたライブラリの例では、各ノードがレイヤーと呼ばれる整数値を持ち、シーングラフデータ中の位置に関係なく、その値が小さいものから順に描画を行う。
レイヤーの利用法の例として、シーングラフデータ中で背景を表現するノード群には小さな値(例えば「−1」)を割り当てる、などといった使い方が考えられる。
As described above, the 3D-CG library using the scene graph data has advantages that modeling is easy and rendering is efficiently performed by the library. Application designers and programmers can focus on what kind of 3D space to express, and leave complicated rendering to the library.
By the way, the drawing order of nodes cannot be specified in the above-mentioned scene graph data. For this reason, in many graphics hardware, when semi-transparent objects overlap, a correct image cannot be obtained unless rendering is performed in order from the viewpoint, which is a great limitation.
Therefore, scene graph data having a priority related to the drawing order of nodes is used.
In an example of a library that supports such scene graph data, each node has an integer value called a layer, and drawing is performed in ascending order of the value regardless of the position in the scene graph data.
As an example of the usage method of the layer, it is conceivable to use a small value (for example, “−1”) for a node group expressing the background in the scene graph data.

レイヤーの値のとりうる値には範囲があり、デフォルトは「0」とする。またレイヤー値は複数のノードで重複してもよい。さらに、レイヤー値が設定される対象はツリーの末端のノードに限られる。
以降、区別するためツリーの末端に位置するノードをリーフノード、ツリーのルートに位置するノードをルートノード、それ以外の、枝分かれの箇所に位置するノードをブランチノードと称する。
このようなシーングラフデータを描画する際に、前述したようにシーンを単純にトラバースしたのでは、レイヤー値によって指定された優先度が正しく反映されない。
レイヤー値に従って正しく描画するための方法のひとつとして、レイヤー値の取りうる値全てについて、繰り返しシーングラフデータをトラバースすることが考えられる。
There is a range of possible values for the layer, and the default is “0”. The layer value may be duplicated at a plurality of nodes. Furthermore, the object for which the layer value is set is limited to the node at the end of the tree.
Hereinafter, for distinction, a node located at the end of the tree is referred to as a leaf node, a node located at the root of the tree is referred to as a root node, and other nodes located at branches are referred to as branch nodes.
When drawing such scene graph data, if the scene is simply traversed as described above, the priority specified by the layer value is not correctly reflected.
As one of the methods for correctly drawing according to the layer value, it is conceivable to repeatedly traverse the scene graph data for all the possible values of the layer value.

以下、図4および図5を用いてこの方法の説明を行う。図4はレイヤー値付のシーングラフデータの例である。図中の円はシーングラフデータSCENのノードであり、「L」はリーフノード、「B」はブランチノード、「R」はルートノードを表す。
すなわち、シーングラフデータSCENは、ルートノード(R)と、リーフノード41〜54と、ブランチノード60〜67を有する。
ノードの左下に示した数値がレイヤー値VLであり、範囲は「−2」〜「2」である。本明細書において、レイヤー値VLが小さくなるに従って、優先度が高くなる、すなわち、描画順が早くなるとする。
Hereinafter, this method will be described with reference to FIGS. FIG. 4 is an example of scene graph data with layer values. Circles in the figure are scene graph data SCEN nodes, “L” represents a leaf node, “B” represents a branch node, and “R” represents a root node.
That is, the scene graph data SCEN includes a root node (R), leaf nodes 41 to 54, and branch nodes 60 to 67.
The numerical value shown at the lower left of the node is the layer value VL, and the range is “−2” to “2”. In the present specification, it is assumed that the priority increases as the layer value VL decreases, that is, the drawing order becomes earlier.

図5はこの方法をフローチャートで示したものである。
例えば、レイヤー値として取りえる最小値「layerMin」である「−2」を変数layerに設定(ステップST1)し、ルートノードからシーングラフのトラバースを開始する(ステップST2)。
そして、ノードを経てリーフに達すると(ステップST2〜ST6)、そのリーフに対応付けられたレイヤー値VLと変数layerを比較し(ステップST7)、これらが一致していれば、そのリーフを描画する(ステップST8)。
一方、全てのノードについて、トラバースが終了(ルートノードに到達)したら(ステップST9)、変数layerに「1」を加算し(ステップST10)、それを基に再びシーングラフのトラバースを行う。これを変数layerが取りえる最大値である「2」まで繰り返す。
FIG. 5 is a flowchart showing this method.
For example, “−2” that is the minimum value “layerMin” that can be taken as a layer value is set in the variable layer (step ST1), and traversing of the scene graph is started from the root node (step ST2).
When the leaf is reached through the node (steps ST2 to ST6), the layer value VL associated with the leaf is compared with the variable layer (step ST7), and if they match, the leaf is drawn. (Step ST8).
On the other hand, when the traversal of all nodes is completed (the root node is reached) (step ST9), “1” is added to the variable layer (step ST10), and the scene graph is traversed again based on this. This is repeated until “2” which is the maximum value that the variable layer can take.

図4の例で考えてみると、1枚のイメージを作成するのにlayer「2」〜「−2」まで5回のトラバースを行うことになる。レイヤー値VLが「−2」のリーフノードは存在しないので、その回は全く無駄なトラバースを行っていることになり、またシーングラフの右半分は全てレイヤー値VLが「0」であるのに、繰り返しトラバースを行うことになる。
このように、この方法は冗長な処理が多くなってしまい、描画速度の面からあまり現実的でない。
また、レンダリングの前処理として、なんらかのソートアルゴリズムによってノードを描画順に並べておくことが考えられる。
しかし、レイヤー値は動的に変更されることも考えられるので、シーングラフを描画する度にソートを行わなければならず、ソート処理自体のオーバーヘッドも考慮しなければならない。特に携帯電話など、CPUの処理速度があまり期待できない環境では十分な描画速度が得られない場合も考えられる。
Considering the example of FIG. 4, to create one image, traversing is performed five times from layer “2” to “−2”. Since there is no leaf node having a layer value VL of “−2”, the traversal is being performed at all times, and the right half of the scene graph is all the layer value VL being “0”. , Repeatedly traverse.
As described above, this method requires a lot of redundant processing and is not practical from the viewpoint of drawing speed.
In addition, as preprocessing for rendering, it is conceivable to arrange the nodes in the drawing order by some sort algorithm.
However, since the layer value may be dynamically changed, sorting must be performed every time a scene graph is drawn, and the overhead of the sorting process itself must be taken into consideration. In particular, there may be a case where a sufficient drawing speed cannot be obtained in an environment where the CPU processing speed cannot be expected so much, such as a mobile phone.

以下、図4に示すシーングラフデータSCENをライブラリプログラムの処理対象として例示して、本実施形態のデータ処理装置を説明する。
<第1実施形態>
図6は、本発明の実施形態に係わるデータ処理装置1の構成図である。
図6に示すように、データ処理装置1は、例えば、入力部10、グラフィックアクセラレータ11、モニタ12、メモリ13およびCPU14を有し、これらがデータ線18を介して接続されている。
図6において、ライブラリプログラムLIBが本発明のプログラムに対応し、CPU14がライブラリプログラムLIBに従って処理を実行することで、本発明のデータ処理装置の各手段が実現される。
また、グラフィックアクセラレータ11が、本発明のデータ処理装置の実行手段に対応している。
Hereinafter, the data processing apparatus of the present embodiment will be described using the scene graph data SCEN shown in FIG. 4 as an example of the processing target of the library program.
<First Embodiment>
FIG. 6 is a configuration diagram of the data processing apparatus 1 according to the embodiment of the present invention.
As shown in FIG. 6, the data processing apparatus 1 includes, for example, an input unit 10, a graphic accelerator 11, a monitor 12, a memory 13, and a CPU 14, which are connected via a data line 18.
In FIG. 6, the library program LIB corresponds to the program of the present invention, and the CPU 14 executes processing according to the library program LIB, thereby realizing each means of the data processing apparatus of the present invention.
The graphic accelerator 11 corresponds to the execution means of the data processing apparatus of the present invention.

入力部10は、例えば、キーボードなどの操作ボタン、タッチパネルなどであり、ユーザの操作に応じた操作データ、あるいは、データ処理装置1の外部からのデータを入力する。
グラフィックアクセラレータ11は、CPU14から描画に用いる行列データを入力し、当該行列データを基に演算を行い、CPU14によるゲームなどのプログラムPRGの進行状況に応じた3次元画像をモニタ12に表示する。
The input unit 10 is, for example, an operation button such as a keyboard, a touch panel, and the like, and inputs operation data corresponding to a user operation or data from the outside of the data processing device 1.
The graphic accelerator 11 receives matrix data used for drawing from the CPU 14, performs an operation based on the matrix data, and displays a three-dimensional image on the monitor 12 according to the progress of a program PRG such as a game by the CPU 14.

メモリ13は、ゲームなどのグラフィック処理を規定したプログラムPRG、ライブラリプログラムLIB、並びにCPU14の処理に用いられる種々のデータを記憶する。
CPU14は、メモリ13から読み出したプログラムPRGおよびライブラリプログラムLIBを実行し、これらの規定した種々の処理を実行する。
The memory 13 stores a program PRG that defines graphic processing such as a game, a library program LIB, and various data used for processing by the CPU 14.
The CPU 14 executes the program PRG and the library program LIB read from the memory 13 and executes these various defined processes.

図7は、図6に示すデータ処理装置1における処理手順を説明するための図である。
図7に示すように、データ処理装置1は、例えば、CPU14がプログラムPRGおよびライブラリプログラムLIBを実行する。
CPU14は、プログラムPRGの実行に従って、図4に示すシーングラフデータSCENを生成し、これをライブラリプログラムLIBに提供する。
そして、CPU14は、ライブラリプログラムLIBの実行に従って、プログラムPRGから受け取ったシーングラフデータSCENを基に、3次元画像を構成する各オブジェクトを表示するための行列データMIXを描画順にグラフィックアクセラレータ11に出力する。
そして、グラフィックアクセラレータ11は、ライブラリプログラムLIBを入力した行列データMIXを基に演算を行って、VRAM(Video RAM) などに表示データを書き込む。そして、当該書き込まれた表示データに応じた3次元画像がモニタ12に表示される。
FIG. 7 is a diagram for explaining a processing procedure in the data processing apparatus 1 shown in FIG.
As shown in FIG. 7, in the data processing apparatus 1, for example, the CPU 14 executes a program PRG and a library program LIB.
In accordance with the execution of the program PRG, the CPU 14 generates the scene graph data SCEN shown in FIG. 4 and provides it to the library program LIB.
Then, according to the execution of the library program LIB, the CPU 14 outputs matrix data MIX for displaying each object constituting the three-dimensional image to the graphic accelerator 11 in the drawing order based on the scene graph data SCEN received from the program PRG. .
The graphic accelerator 11 performs an operation based on the matrix data MIX to which the library program LIB is input, and writes the display data in a VRAM (Video RAM) or the like. Then, a three-dimensional image corresponding to the written display data is displayed on the monitor 12.

図8は、CPU14が、ライブラリプログラムLIBに従って実行する処理の手順を説明するためのフロ−チャートである。
図8において、ステップST2が本発明のプログラムの第1の手順に対応し、ステップST3が本発明のプログラムの第2の手順に対応している。
また、CPU14がステップST2の処理を実行することで本発明のデータ処理装置の前処理手段が実現され、CPU14がステップST3の処理を実行することで本発明のデータ処理装置の実行制御手段が実現される。
FIG. 8 is a flowchart for explaining a procedure of processing executed by the CPU 14 in accordance with the library program LIB.
In FIG. 8, step ST2 corresponds to the first procedure of the program of the present invention, and step ST3 corresponds to the second procedure of the program of the present invention.
Further, the preprocessing means of the data processing apparatus of the present invention is realized by the CPU 14 executing the process of step ST2, and the execution control means of the data processing apparatus of the present invention is realized by the CPU 14 executing the process of step ST3. Is done.

図8に示すように、CPU14は、プログラムPRGからシーングラフデータSCENを入力する(ステップST1)。
次に、CPU14は、シーングラフデータSCENを構成するルートノードおよびブランチノードに、各レイヤー値VLの処理段階で、その下層ノードをトラバースするか否かを判断するために用いられるマスクデータMSKを対応付けたシーングラフデータSCENaを生成する。
(ステップST2)。
次に、CPU14は、複数のレイヤー値の各々について、シーングラフデータSCENaで規定されるマスタデータMSKを基に、ツリーを構成するブランチノードおよびリーフノードをトレースして、描画するオブジェクトの行列データMIXを生成し、これをグラフィックアクセラレータ11に出力する(ステップST3)。
As shown in FIG. 8, the CPU 14 inputs scene graph data SCEN from the program PRG (step ST1).
Next, the CPU 14 corresponds to the root node and the branch node constituting the scene graph data SCEN with the mask data MSK used for determining whether or not to traverse the lower layer node in the processing stage of each layer value VL. The attached scene graph data SCENa is generated.
(Step ST2).
Next, for each of the plurality of layer values, the CPU 14 traces branch nodes and leaf nodes constituting the tree on the basis of the master data MSK defined by the scene graph data SCENa, and draws matrix data MIX of objects to be drawn. Is output to the graphic accelerator 11 (step ST3).

以下、図8に示すマスクデータ生成処理(ステップST2)と、行列データMIXの生成処理(ステップST3)を詳細に説明する。
〔マスクデータ生成処理(ステップST2)〕
CPU14は、前述したように、ライブラリプログラムLIBを基に、以下に示すように、マスタデータ生成処理を行う。
CPU14は、レイヤー値VLの範囲をlayerMin(最小)〜layerMax(最大)とする。
CPU14は、(layerMax−layerMin+1)ビットのビット列を基に、対応するレイヤーのビットを「1」(第1の論理値)にし、それ以外のビットを「0」(第2の論理値)にしたレイヤー値VLを規定する。
例えば、本実施形態では、layerMaxが「2」、layerMinが「−2」であるため、CPU14は、5ビットのレイヤー値VLを規定する。
CPU14は、例えば、「−2」〜「2」のレイヤー値VLを以下に示すように規定する。
Hereinafter, the mask data generation process (step ST2) and the matrix data MIX generation process (step ST3) shown in FIG. 8 will be described in detail.
[Mask Data Generation Processing (Step ST2)]
As described above, the CPU 14 performs a master data generation process based on the library program LIB as described below.
The CPU 14 sets the range of the layer value VL to layerMin (minimum) to layerMax (maximum).
The CPU 14 sets the bit of the corresponding layer to “1” (first logical value) based on the bit string of (layerMax-layerMin + 1) bits, and sets the other bits to “0” (second logical value). Define the layer value VL.
For example, in this embodiment, since layerMax is “2” and layerMin is “−2”, the CPU 14 defines a 5-bit layer value VL.
For example, the CPU 14 defines the layer values VL of “−2” to “2” as shown below.

(数1)
VL=−2 :10000
VL=−1 :01000
VL=0 :00100
VL=1 :00010
VL=2 :00001
(Equation 1)
VL = -2: 10000
VL = -1: 01000
VL = 0: 00100
VL = 1: 00010
VL = 2: 00001

CPU14は、図4に示すシーングラフデータSCEN内のリーフノード(L)に割り当てられたレイヤー値VLを、図9に示すように、5ビットで表現する。
CPU14は、図4に示すシーングラフデータSCENの全てのノードをトラバースし、ルートノード(R)および各ブランチノード(B)毎に、当該ノードの下層に位置するリーフノード(L)(下層ノード)を何れのレイヤー値LVで描画するかを示すマスクデータMSKを生成し、このマスクデータMSKをルートノード(R)および対応するブランチノード(B)に対応付ける。
具体的には、CPU14は、図10に示すように、ルートノードおよび各ブランチノード(B)のマスクデータMSKを、当該ノードを親とする1つ下層のブランチノード(B)およびリーフノード(L)のマスクデータMSKおよびレイヤー値LVの論理和を演算することで生成する。
例えば、ブランチノード61のマスクデータMSKは、リーフノード41,42,43のレイヤー値VLである「01000」、「01000」、「01000」の論理和である「01000」となる。
また、ブランチノード60のマスクデータMSKは、ブランチノード61,62,63のマスクデータMSKである「01000」、「00011」、「00010」の論理和である「01011」となる。
CPU14は、上述した演算を、シーングラフデータSCENを構成するルートノード(R)および全てのブランチノード(B)について再帰的に行い、図10に示すように、ルートノード(R)および全てのブランチノード(B)のマスクデータMSKを生成し、これを対応するルートノード(R)およびブランチノード(B)に割り当てることで、図10に示す新たなシーングラフデータSCENaを生成する。
The CPU 14 represents the layer value VL assigned to the leaf node (L) in the scene graph data SCEN shown in FIG. 4 with 5 bits as shown in FIG.
The CPU 14 traverses all the nodes of the scene graph data SCEN shown in FIG. 4, and for each root node (R) and each branch node (B), a leaf node (L) (lower layer node) located below the node. Is generated with which layer value LV is to be drawn, and the mask data MSK is associated with the root node (R) and the corresponding branch node (B).
Specifically, as shown in FIG. 10, the CPU 14 uses the mask data MSK of the root node and each branch node (B) as the branch node (B) and the leaf node (L ) Of the mask data MSK and the layer value LV.
For example, the mask data MSK of the branch node 61 is “01000” that is the logical sum of “01000”, “01000”, and “01000” that are the layer values VL of the leaf nodes 41, 42, and 43.
Further, the mask data MSK of the branch node 60 is “01011” which is a logical sum of “01000”, “00011”, and “00010” that are the mask data MSK of the branch nodes 61, 62, and 63.
The CPU 14 performs the above-described operation recursively for the root node (R) and all branch nodes (B) constituting the scene graph data SCEN, and as shown in FIG. 10, the root node (R) and all branches. The mask data MSK of the node (B) is generated and assigned to the corresponding root node (R) and branch node (B), thereby generating new scene graph data SCENa shown in FIG.

〔行列データMIXの生成処理(ステップST3)〕
CPU14は、前述したように、ライブラリプログラムLIBに従って、ステップST2で生成された図10に示すシーングラフデータSCENaを基に、以下に示すように、行列データMIXの生成処理を行う。
CPU14は、変数layerに、レイヤー値VLのlayerMin(最小)からlayerMax(最大)を順に選択して設定する。
CPU14は、変数layerにレイヤー値VLを設定する度に、以下に示すように図10に示すシーングラフデータSCENaをトラバースする。
すなわち、CPU14は、図10に示すシーングラフデータSCENaのトラバースを、ルートノード(R)から開始する。
CPU14は、ルートノード(R)に対応付けられたマスクデータMSK内の変数layerが示すレイヤー値VL(選択されたレイヤー)に対応するビットが論理値「1」を示す場合に、当該レイヤー値VLについてのトラバースを行う。
そして、CPU14は、ルートノード(R)の子であるブランチノード(B)およびリーフノード(L)のうち、それに対応付けられたマスクデータMSK内の変数layerが示すレイヤー値VL(選択されたレイヤー)に対応するビットが論理値「1」を示すノードを選択する。
[Matrix Data MIX Generation Processing (Step ST3)]
As described above, the CPU 14 generates the matrix data MIX as described below based on the scene graph data SCENa shown in FIG. 10 generated in step ST2 in accordance with the library program LIB.
The CPU 14 selects and sets layerMax (maximum) from layerMin (minimum) of the layer value VL in order to the variable layer.
Each time the CPU 14 sets the layer value VL in the variable layer, the CPU 14 traverses the scene graph data SCENa shown in FIG.
That is, the CPU 14 starts traversing the scene graph data SCENa shown in FIG. 10 from the root node (R).
When the bit corresponding to the layer value VL (selected layer) indicated by the variable layer in the mask data MSK associated with the root node (R) indicates the logical value “1”, the CPU 14 determines the layer value VL. Traverse about.
Then, the CPU 14 selects the layer value VL (selected layer) indicated by the variable layer in the mask data MSK associated with the branch node (B) and leaf node (L) that are children of the root node (R). ) In which the bit corresponding to the logical value “1” is selected.

そして、CPU14は、上記選択したブランチノード(B)について、その下層のブランチノード(B)およびリーフノード(L)のトラバースを行う。
一方、CPU14は、上記選択しないブランチノード(B)についてはその下層のブランチノード(B)およびリーフノード(L)のトラバースを行わない(すなわち、トラーースをスキップする)。これにより、変数layerを更新する度に、全てのリーフノード(L)をトラバースする必要がなくなり、処理負荷の軽減、処理時間の短縮を図れる。
Then, the CPU 14 traverses the branch node (B) and the leaf node (L) below the selected branch node (B).
On the other hand, the CPU 14 does not traverse the branch node (B) and the leaf node (L) below the branch node (B) that is not selected (that is, skips traverse). This eliminates the need to traverse all leaf nodes (L) each time the variable layer is updated, thereby reducing processing load and processing time.

具体的には、CPU14は、図10に示すシーングラフデータSCENaを処理対象とする場合に、以下に示すように、変数layerに「−2」から順に「2」までの変数を順に設定してトラバースを行う。   Specifically, when the scene graph data SCENa shown in FIG. 10 is a processing target, the CPU 14 sets variables from “−2” to “2” in order in the variable layer as shown below. Traverse.

CPU14は、先ず、最も早い描画順を示す「−2」が変数layerに設定されると、ルートノード(R)のマスクデータMSKである「01111」を見て、変数layerの設定値「−2」に対応する5ビット目が論理値「0」であるため、設定値「−2」についてのトラバースを行わない(スキップする)。
次に、CPU14は、変数layerに「−1」を設定する。
First, when “−2” indicating the earliest drawing order is set in the variable layer, the CPU 14 looks at “01111” which is the mask data MSK of the root node (R), and sets the value “−2” of the variable layer. Since the fifth bit corresponding to “” is the logical value “0”, the traversal for the set value “−2” is not performed (skipped).
Next, the CPU 14 sets “−1” in the variable layer.

図11は、変数layerに「−1」が設定された場合のCPU14によるトラバース処理を説明するための図である。
図11に示すように、CPU14は、例えば、ルートノード(R)の子であるブランチノード60,65のマスクデータMSKである「01011」,「00100」を見て、変数layerの設定値「−1」に対応する4ビット目が論理値「1」を示すブランチノード60を選択し、ブランチノード65を選択しない。すなわち、ブランチノード65の下層ノードのトラバースをスキップする。
次に、CPU14は、上記選択したブランチノード60の子であるブランチノード61,62,64のマスクデータMSKである「01000」,「00011」,「00010」を見て、変数layerの設定値「−1」に対応する4ビット目が論理値「1」を示すブランチノード61を選択し、ブランチノード62,64を選択しない。すなわち、ブランチノード62,64の下層ノードのトラバースをスキップする。
次に、CPU14は、上記選択したブランチノード61の子であるリーフノード41,42,43のレイヤー値である「01000」,「01000」,「01000」を見て、変数layerの設定値「−1」に対応する4ビット目が論理値「1」を示すリーフノード41,42,43選択する。
次に、CPU14は、上記選択したリーフノード41,42,43に割り当てられた画像オブジェクトデータを示す行列と、当該リーフノードからルートノード(R)までの経路に位置するブランチノード60,61に対応付けられた演算を示す行列とを、行列データMIXとしてグラフィックアクセラレータ11に出力する。
次に、CPU14は、変数layerに「0」を設定する。
FIG. 11 is a diagram for explaining traversing processing by the CPU 14 when “−1” is set in the variable layer.
As shown in FIG. 11, for example, the CPU 14 looks at “01011” and “00100” that are mask data MSK of the branch nodes 60 and 65 that are children of the root node (R), and sets the value “−” of the variable layer. The branch node 60 in which the fourth bit corresponding to “1” indicates the logical value “1” is selected, and the branch node 65 is not selected. That is, the traversal of the node below the branch node 65 is skipped.
Next, the CPU 14 looks at the mask data MSK “01000”, “00011”, “00010” of the branch nodes 61, 62, 64 that are children of the selected branch node 60, and sets the set value “ The branch node 61 in which the fourth bit corresponding to “−1” indicates the logical value “1” is selected, and the branch nodes 62 and 64 are not selected. That is, the traversal of the lower node of the branch nodes 62 and 64 is skipped.
Next, the CPU 14 looks at the layer values “01000”, “01000”, and “01000” of the leaf nodes 41, 42, and 43 that are children of the selected branch node 61, and sets the value “−” of the variable layer. Leaf nodes 41, 42, and 43 in which the fourth bit corresponding to “1” indicates the logical value “1” are selected.
Next, the CPU 14 corresponds to the matrix indicating the image object data assigned to the selected leaf nodes 41, 42, and 43 and the branch nodes 60 and 61 located on the route from the leaf node to the root node (R). A matrix indicating the added operation is output to the graphic accelerator 11 as matrix data MIX.
Next, the CPU 14 sets “0” in the variable layer.

図12は、変数layerに「0」が設定された場合のCPU14によるトラバース処理を説明するための図である。
図12に示すように、CPU14は、例えば、ルートノード(R)の子であるブランチノード60,65のマスクデータMSKである「01011」,「00100」を見て、変数layerの設定値「0」に対応する3ビット目が論理値「1」を示すブランチノード65を選択し、ブランチノード60を選択しない。すなわち、ブランチノード60の下層ノードのトラバースをスキップする。
次に、CPU14は、上記選択したブランチノード65の子であるブランチノード66,67のマスクデータMSKである「00100」,「00100」を見て、変数layerの設定値「0」に対応する3ビット目が論理値「1」を示すブランチノード66,67を選択する。
次に、CPU14は、上記選択したブランチノード66の子であるリーフノード49,50,51,52のレイヤー値である「00100」,「00100」,「00100」,「00100」を見て、変数layerの設定値「0」に対応する3ビット目が論理値「1」を示すリーフノード49,50,51,52を選択する。
次に、CPU14は、上記選択したブランチノード67の子であるリーフノード53,54のレイヤー値である「00100」,「00100」を見て、変数layerの設定値「0」に対応する3ビット目が論理値「1」を示すリーフノード53,54を選択する。
次に、CPU14は、上記選択したリーフノード49〜54に割り当てられた画像オブジェクトデータを示す行列と、当該リーフノードからルートノード(R)までの経路に位置するブランチノード65,66,67に対応付けられた演算を示す行列とを、行列データMIXとしてグラフィックアクセラレータ11に出力する。
次に、CPU14は、変数layerに「1」を設定する。
FIG. 12 is a diagram for explaining traversing processing by the CPU 14 when “0” is set in the variable layer.
As illustrated in FIG. 12, for example, the CPU 14 looks at “01011” and “00100” that are mask data MSK of the branch nodes 60 and 65 that are children of the root node (R), and sets the value “0” of the variable layer. A branch node 65 in which the third bit corresponding to “” indicates a logical value “1” is selected, and the branch node 60 is not selected. That is, the traversal of the node below the branch node 60 is skipped.
Next, the CPU 14 looks at “00100” and “00100” which are the mask data MSK of the branch nodes 66 and 67 which are children of the selected branch node 65 and corresponds to the set value “0” of the variable layer. Branch nodes 66 and 67 whose bit bits indicate a logical value “1” are selected.
Next, the CPU 14 looks at the layer values “00100”, “00100”, “00100”, “00100”, which are the child nodes of the selected branch node 66, and sets the variable Leaf nodes 49, 50, 51, and 52 in which the third bit corresponding to the layer setting value “0” indicates the logical value “1” are selected.
Next, the CPU 14 looks at “00100” and “00100” that are the layer values of the leaf nodes 53 and 54 that are children of the selected branch node 67, and corresponds to the set value “0” of the variable layer. The leaf nodes 53 and 54 whose eyes indicate the logical value “1” are selected.
Next, the CPU 14 corresponds to the matrix indicating the image object data assigned to the selected leaf nodes 49 to 54 and the branch nodes 65, 66, and 67 located on the route from the leaf node to the root node (R). A matrix indicating the added operation is output to the graphic accelerator 11 as matrix data MIX.
Next, the CPU 14 sets “1” in the variable layer.

図13は、変数layerに「1」が設定された場合のCPU14によるトラバース処理を説明するための図である。
図13に示すように、CPU14は、例えば、ルートノード(R)の子であるブランチノード60,65のマスクデータMSKである「01011」,「00100」を見て、変数layerの設定値「1」に対応する2ビット目が論理値「1」を示すブランチノード60を選択し、ブランチノード65を選択しない。すなわち、ブランチノード65の下層ノードのトラバースをスキップする。
次に、CPU14は、上記選択したブランチノード60の子であるブランチノード61,62,64のマスクデータMSKである「01000」,「00011」,「00010」を見て、変数layerの設定値「1」に対応する2ビット目が論理値「1」を示すブランチノード62,64を選択する。すなわち、ブランチノード61の下層ノードのトラバースをスキップする。
次に、CPU14は、上記選択したブランチノード62の子であるブランチノード63のマスクデータMSKである「00011」を見て、変数layerの設定値「1」に対応する2ビット目が論理値「1」であるため、これを選択する。
次に、CPU14は、上記選択したブランチノード63の子であるリーフノード44,45のレイヤー値VLである「00010」,「00001」を見て、変数layerの設定値「1」に対応する2ビット目が論理値「1」のリーフノード44を選択し、リーフノード45を選択しない。
一方、CPU14は、上記選択したブランチノード62の子であるリーフノード46,47のレイヤー値VLである「00010」,「00010」を見て、変数layerの設定値「1」に対応する2ビット目が論理値「1」であるため、これらを選択する。
また、CPU14は、上記選択したブランチノード64の子であるリーフノード48のレイヤー値VLである「00010」を見て、変数layerの設定値「1」に対応する2ビット目が論理値「1」であるため、これを選択する。
次に、CPU14は、上記選択したリーフノード44,46,47,48に割り当てられた画像オブジェクトデータを示す行列と、当該リーフノードからルートノード(R)までの経路に位置するブランチノード60,62,63,64に対応付けられた演算を示す行列とを、行列データMIXとしてグラフィックアクセラレータ11に出力する。
次に、CPU14は、変数layerに「2」を設定する。
FIG. 13 is a diagram for explaining traversing processing by the CPU 14 when “1” is set in the variable layer.
As shown in FIG. 13, for example, the CPU 14 looks at “01011” and “00100” that are mask data MSK of the branch nodes 60 and 65 that are children of the root node (R), and sets the value “1” of the variable layer. A branch node 60 in which the second bit corresponding to “” indicates a logical value “1” is selected, and the branch node 65 is not selected. That is, the traversal of the node below the branch node 65 is skipped.
Next, the CPU 14 looks at the mask data MSK “01000”, “00011”, “00010” of the branch nodes 61, 62, 64 that are children of the selected branch node 60, and sets the set value “ Branch nodes 62 and 64 in which the second bit corresponding to “1” indicates a logical value “1” are selected. That is, the traverse of the lower node of the branch node 61 is skipped.
Next, the CPU 14 looks at “00011” which is the mask data MSK of the branch node 63 which is a child of the selected branch node 62, and the second bit corresponding to the set value “1” of the variable layer is the logical value “ This is selected because “1”.
Next, the CPU 14 sees the layer values VL “00010” and “00001” of the leaf nodes 44 and 45 that are children of the selected branch node 63, and corresponds to the setting value “1” of the variable layer. The leaf node 44 whose bit is the logical value “1” is selected, and the leaf node 45 is not selected.
On the other hand, the CPU 14 sees the layer values VL “00010” and “00010” of the leaf nodes 46 and 47 that are children of the selected branch node 62, and 2 bits corresponding to the setting value “1” of the variable layer Since the eye has a logical value “1”, these are selected.
Further, the CPU 14 looks at “00010” which is the layer value VL of the leaf node 48 which is a child of the selected branch node 64, and the second bit corresponding to the setting value “1” of the variable layer is the logical value “1”. This is selected.
Next, the CPU 14 selects a matrix indicating the image object data assigned to the selected leaf nodes 44, 46, 47, and 48, and branch nodes 60 and 62 located on the route from the leaf node to the root node (R). , 63, and 64 are output to the graphic accelerator 11 as matrix data MIX.
Next, the CPU 14 sets “2” in the variable layer.

図14は、変数layerに「2」が設定された場合のCPU14によるトラバース処理を説明するための図である。
図14に示すように、CPU14は、例えば、ルートノード(R)の子であるブランチノード60,65のマスクデータMSKである「01011」,「00100」を見て、変数layerの設定値「2」に対応する1ビット目が論理値「1」を示すブランチノード60を選択し、ブランチノード65を選択しない。すなわち、ブランチノード65の下層ノードのトラバースをスキップする。
次に、CPU14は、上記選択したブランチノード60の子であるブランチノード61,62,64のマスクデータMSKである「01000」,「00011」,「00010」を見て、変数layerの設定値「2」に対応する1ビット目が論理値「1」を示すブランチノード62を選択し、ブランチノード61,64を選択しない。すなわち、ブランチノード61,64の下層ノードのトラバースをスキップする。
次に、CPU14は、上記選択したブランチノード62の子であるブランチノード63のマスクデータMSKである「00011」を見て、変数layerの設定値「2」に対応する1ビット目が論理値「1」であるため、これを選択する。
次に、CPU14は、上記選択したブランチノード63の子であるリーフノード44,45のレイヤー値VLである「00010」,「00001」を見て、変数layerの設定値「2」に対応する1ビット目が論理値「1」のリーフノード45を選択し、リーフノード44を選択しない。
一方、CPU14は、上記選択したブランチノード62の子であるリーフノード46,47のレイヤー値VLである「00010」,「00010」を見て、変数layerの設定値「2」に対応する1ビット目が論理値「1」ではないため、これらを選択しない。
次に、CPU14は、上記選択したリーフノード45に割り当てられた画像オブジェクトデータを示す行列と、当該リーフノードからルートノード(R)までの経路に位置するブランチノード60,62,63に対応付けられた演算を示す行列とを、行列データMIXとしてグラフィックアクセラレータ11に出力する。
FIG. 14 is a diagram for explaining traversing processing by the CPU 14 when “2” is set in the variable layer.
As illustrated in FIG. 14, for example, the CPU 14 looks at “01011” and “00100” that are the mask data MSK of the branch nodes 60 and 65 that are children of the root node (R), and sets the value “2” of the variable layer. The branch node 60 in which the first bit corresponding to “” indicates the logical value “1” is selected, and the branch node 65 is not selected. That is, the traversal of the node below the branch node 65 is skipped.
Next, the CPU 14 looks at the mask data MSK “01000”, “00011”, “00010” of the branch nodes 61, 62, 64 that are children of the selected branch node 60, and sets the set value “ The branch node 62 in which the first bit corresponding to “2” indicates the logical value “1” is selected, and the branch nodes 61 and 64 are not selected. That is, the traversal of the lower node of the branch nodes 61 and 64 is skipped.
Next, the CPU 14 looks at “00011” that is the mask data MSK of the branch node 63 that is a child of the selected branch node 62, and the first bit corresponding to the setting value “2” of the variable layer is the logical value “ This is selected because “1”.
Next, the CPU 14 looks at the layer values VL “00010” and “00001” of the leaf nodes 44 and 45 that are children of the selected branch node 63, and corresponds to the setting value “2” of the variable layer. The leaf node 45 whose bit is the logical value “1” is selected, and the leaf node 44 is not selected.
On the other hand, the CPU 14 looks at “00010” and “00010” which are the layer values VL of the leaf nodes 46 and 47 which are children of the selected branch node 62, and 1 bit corresponding to the setting value “2” of the variable layer. Since the eyes are not the logical value “1”, these are not selected.
Next, the CPU 14 is associated with the matrix indicating the image object data assigned to the selected leaf node 45 and the branch nodes 60, 62, and 63 located on the route from the leaf node to the root node (R). The matrix indicating the calculated operation is output to the graphic accelerator 11 as matrix data MIX.

図15は、CPU14によるトラバース処理を説明するためのフローチャートである。
以下、図15に示す各ステップを説明する。
ステップST21:
CPU14は、レイヤー値VLの最小値であるlayerMinを変数layerに設定する。
ステップST22:
CPU14は、図10に示すシーングラフデータSCENaのルートノード(R)に割り当てられたマスクデータMSKの変数layerの設定値に対応するビットが論理値「1」であるか否かを判断し、論理値「1」である場合に、ステップST23に進み、そうでない場合に、ステップST32に進む。
ステップST23:
CPU14は、シーングラフデータSCENa内のルートノ−ドRの下層ノードのトラバースを開始する。
FIG. 15 is a flowchart for explaining the traversing process by the CPU 14.
Hereinafter, each step shown in FIG. 15 will be described.
Step ST21:
The CPU 14 sets layerMin, which is the minimum value of the layer value VL, in the variable layer.
Step ST22:
The CPU 14 determines whether the bit corresponding to the set value of the variable layer of the mask data MSK assigned to the root node (R) of the scene graph data SCENa shown in FIG. 10 is the logical value “1”. If the value is “1”, the process proceeds to step ST23, and if not, the process proceeds to step ST32.
Step ST23:
The CPU 14 starts traversing the lower node of the root node R in the scene graph data SCENa.

ステップST24:
CPU14は、上記トラバースにより、ノードに到達する。
ステップST25:
CPU14は、ステップST24で到達したノードがブランチノード(B)であるか否かを判断し、ブランチノード(B)である場合にステップST27に進み、そうでない場合にステップST26に進む。
ステップST26:
CPU14は、ステップST24で到達したノードがルートノード(R)であるか否かを判断し、ルートノード(R)である場合にステップST32に進み、そうでない場合にステップST29に進む。
Step ST24:
The CPU 14 reaches the node by the traverse.
Step ST25:
The CPU 14 determines whether or not the node reached in step ST24 is a branch node (B). If the node is a branch node (B), the process proceeds to step ST27. If not, the process proceeds to step ST26.
Step ST26:
The CPU 14 determines whether or not the node reached in step ST24 is the root node (R). If the node is the root node (R), the process proceeds to step ST32. If not, the process proceeds to step ST29.

ステップST27:
CPU14は、ステップST24で到達したブランチノード(B)のマスクデータMSKのうち、変数layerの設定値に対応するビットが論理値「1」を示すか否かを判断し、論理値「1」を示す場合には、当該ブランチノード(B)の下層ノードのトラバースに進む。
一方、CPU14は、変数layerの設定値に対応するビットが論理値「1」を示さないと判断した場合には、ステップST28に進む。
ステップST28:
CPU14は、ステップST24で到達した上記ブランチノード(B)の下層ノードのトラバースに行わない(スキップする)。
CPU14は、ステップST28の処理を終了した後に、再び、シーングラフデータSCENa内の上記スキップした下層ノード以外のノードのトラバースを行う。
Step ST27:
The CPU 14 determines whether or not the bit corresponding to the set value of the variable layer among the mask data MSK of the branch node (B) reached in step ST24 indicates the logical value “1”, and sets the logical value “1”. In the case shown, the process proceeds to the traverse of the lower node of the branch node (B).
On the other hand, when the CPU 14 determines that the bit corresponding to the set value of the variable layer does not indicate the logical value “1”, the CPU 14 proceeds to step ST28.
Step ST28:
The CPU 14 does not perform (skip) the traverse of the lower layer node of the branch node (B) reached in step ST24.
After completing the process in step ST28, the CPU 14 again traverses nodes other than the skipped lower layer node in the scene graph data SCENa.

ステップST29:
CPU14は、ステップST24で到達したノードがリーフノード(L)であると判断する。
ステップST30:
CPU14は、ステップST24で到達したリーフノード(L)に対応付けられたレイヤー値VLのうち、変数layer値の設定値に対応するビットが論理値「1」であるか否かを判断し、論理値「1」である場合にステップST31に進み、そうでない場合にステップST23に戻る。
ステップST31:
CPU14は、ステップST24で到達したリーフノード(L)に割り当てられた画像オブジェクトデータを示す行列と、当該リーフノードからルートノード(R)までの経路に位置するブランチノードに対応付けられた演算を示す行列とを行列データMIXとしてグラフィックアクセラレータ11に出力する。すなわち、CPU14は、当該リーフノード(L)に対応した描画処理をグラフィックアクセラレータ11に行わせる。
Step ST29:
The CPU 14 determines that the node reached in step ST24 is a leaf node (L).
Step ST30:
The CPU 14 determines whether or not the bit corresponding to the set value of the variable layer value is the logical value “1” in the layer value VL associated with the leaf node (L) reached in step ST24. If the value is “1”, the process proceeds to step ST31. If not, the process returns to step ST23.
Step ST31:
The CPU 14 indicates a matrix indicating the image object data assigned to the leaf node (L) reached in step ST24 and an operation associated with the branch node located on the route from the leaf node to the root node (R). The matrix is output to the graphic accelerator 11 as matrix data MIX. That is, the CPU 14 causes the graphic accelerator 11 to perform drawing processing corresponding to the leaf node (L).

ステップST32:
CPU14は、変数layerの設定値が、レイヤー値VLの最大値であるlayerMaxであるか否かを判断し、そうである場合に処理をシーングラフデータSCENaについて処理を終了し、そうでない場合にステップST33に進む。
ステップST33:
CPU14は、変数layerに「1」を加算して変数layerを更新し、続いて、ステップST22の処理に進む。
Step ST32:
The CPU 14 determines whether or not the set value of the variable layer is layerMax which is the maximum value of the layer value VL. If so, the process ends with respect to the scene graph data SCENa. Proceed to ST33.
Step ST33:
The CPU 14 adds “1” to the variable layer to update the variable layer, and then proceeds to the processing of step ST22.

以上説明したように、データ処理装置1によれば、CPU14がライブラリプログラムLIBに従って上述したようにシーングラフデータSCENのトラバースのスキップを必要に応じて行うことで、各レイヤー値VL毎にシーングラフデータSCEN内の全てのノードをトラバースする従来のシステムに比べて、トラバースに伴う処理量を削減でき、処理時間を短縮できる。そのため、携帯電話などのCPUのパフォーマンスが低い機器にも導入できる。
また、データ処理装置1によれば、マスクデータMSKの生成を上述したように論理和演算で規定することで、その処理を短時間で行うことができる。
As described above, according to the data processing apparatus 1, the CPU 14 skips the traversal of the scene graph data SCEN as necessary according to the library program LIB, so that the scene graph data is obtained for each layer value VL. Compared to a conventional system that traverses all nodes in SCEN, the amount of processing accompanying traversing can be reduced, and the processing time can be shortened. For this reason, it can be introduced into a device such as a mobile phone having low CPU performance.
Further, according to the data processing device 1, by defining the generation of the mask data MSK by the logical sum operation as described above, the processing can be performed in a short time.

<第2実施形態>
本実施形態のデータ処理装置は、ライブラリプログラムに基づくCPUの処理を除いて、第1実施形態のデータ処理装置1と同じである。
図6に示すように、データ処理装置1aは、例えば、入力部10、グラフィックアクセラレータ11、モニタ12、メモリ13aおよびCPU14aを有する。
図6において、第1実施形態と同じ符号を付した入力部10、グラフィックアクセラレータ11およびモニタ12は第1実施形態で説明したものと同じである。
データ処理装置1aのメモリ13aは、プログラムPRGと、ライブラリプログラムLIBaを記憶する。
<Second Embodiment>
The data processing apparatus of the present embodiment is the same as the data processing apparatus 1 of the first embodiment except for the processing of the CPU based on the library program.
As illustrated in FIG. 6, the data processing device 1a includes, for example, an input unit 10, a graphic accelerator 11, a monitor 12, a memory 13a, and a CPU 14a.
In FIG. 6, the input unit 10, the graphic accelerator 11, and the monitor 12 denoted by the same reference numerals as those in the first embodiment are the same as those described in the first embodiment.
The memory 13a of the data processing device 1a stores a program PRG and a library program LIBa.

CPU14aは、メモリ13aから読み出したライブラリプログラムLIBaを基に以下にマーク値MARKの生成処理、並びに行列データMIXの生成処理を行う。
図16は、CPU14aが、ライブラリプログラムLIBaに従って実行する処理の手順を説明するためのフロ−チャートである。
図16に示すように、CPU14aは、プログラムPRGからシーングラフデータSCENを入力する(ステップST51)。
次に、CPU14aは、シーングラフデータSCENを構成するルートノード(R)およびブランチノード(B)にマーク値MARKを対応付けてシーングラフデータSCENbを生成する(ステップST52)。
次に、CPU14aは、シーングラフデータSCENbのマーク値MARKを基に、シーングラフデータSCENbを構成するブランチノードおよびリーフノードをトレースして、描画するオブジェクトの行列データMIXを生成し、これをグラフィックアクセラレータ11に出力する(ステップST3)。
Based on the library program LIBa read from the memory 13a, the CPU 14a performs a process for generating a mark value MARK and a process for generating matrix data MIX.
FIG. 16 is a flowchart for explaining a procedure of processing executed by the CPU 14a in accordance with the library program LIBa.
As shown in FIG. 16, the CPU 14a inputs scene graph data SCEN from the program PRG (step ST51).
Next, the CPU 14a generates scene graph data SCENb by associating the mark value MARK with the root node (R) and the branch node (B) constituting the scene graph data SCEN (step ST52).
Next, the CPU 14a traces branch nodes and leaf nodes constituting the scene graph data SCENb based on the mark value MARK of the scene graph data SCENb, and generates matrix data MIX of an object to be drawn, which is generated as a graphic accelerator. 11 (step ST3).

以下、図16に示すマーク値MARKの生成処理(ステップST52)と、行列データMIXの生成処理(ステップST53)を詳細に説明する。
〔マーク値MARKの生成処理(ステップST52)〕
CPU14aは、前述したように、ライブラリプログラムLIBaを基に、以下に示すように、マーク値MARKの生成処理を行う。
CPU14aは、レイヤー値VLの範囲をlayerMin(最小)〜layerMax(最大)とする。
CPU14aは、図4に示すシーングラフデータSCENをトラバースし、ルートノード(R)および各ブランチノード(B)について、リーフノード(L)に近い順からマーク値MARKを決定する。
CPU14は、各ブランチノード(B)について、当該ブランチノード(B)の子であるリーフノード(L)およびブランチノード(B)に割り当てられたレイヤー値VLのうち、最も小さい(優先順位が高い)レイヤー値VLを特定し、当該特定したレイヤー値VLを示すマーク値MARKを、当該ブランチノード(B)に対応付ける。
CPU14aは、ルートノード(R)につても同様に、マーク値MARKを対応付ける。
具体的には、CPU14aは、図17に示すように、ルートノード(R)および各ブランチノード(B)のマーク値MARKを対応付ける。
The mark value MARK generation process (step ST52) and the matrix data MIX generation process (step ST53) shown in FIG. 16 will be described in detail below.
[Generation processing of mark value MARK (step ST52)]
As described above, the CPU 14a generates the mark value MARK based on the library program LIBa as described below.
The CPU 14a sets the range of the layer value VL to layerMin (minimum) to layerMax (maximum).
The CPU 14a traverses the scene graph data SCEN shown in FIG. 4, and determines the mark value MARK for the root node (R) and each branch node (B) from the order close to the leaf node (L).
For each branch node (B), the CPU 14 is the smallest (highest priority) of the layer values VL assigned to the leaf node (L) and the branch node (B) that are children of the branch node (B). The layer value VL is specified, and the mark value MARK indicating the specified layer value VL is associated with the branch node (B).
Similarly, the CPU 14a associates the mark value MARK with the root node (R).
Specifically, as shown in FIG. 17, the CPU 14a associates the mark value MARK of the root node (R) and each branch node (B).

例えば、ブランチノード61のマーク値MARKは、リーフノード41,42,43のレイヤー値VLが全て「−1」であるため、「−1」となる。
また、ブランチノード60のマーク値MARKは、ブランチノード61,62,63のマーク値MARKがそれぞれ「−1」,「1」,「1」であるため、最も小さい「−1」となる。
CPU14aは、上述した演算を、シーングラフデータSCENを構成するルートノード(R)および全てのブランチノード(B)について再帰的に行い、図17に示すように、ルートノード(R)および全てのブランチノード(B)のマーク値MARKを生成し、これを対応するルートノード(R)およびブランチノード(B)に割り当てて、図17に示す新たなシーングラフデータSCENbを生成する。
For example, the mark value MARK of the branch node 61 is “−1” because the layer values VL of the leaf nodes 41, 42, and 43 are all “−1”.
Further, the mark value MARK of the branch node 60 is the smallest “−1” because the mark values MARK of the branch nodes 61, 62, and 63 are “−1”, “1”, and “1”, respectively.
The CPU 14a performs the above-described operation recursively for the root node (R) and all branch nodes (B) constituting the scene graph data SCEN, and as shown in FIG. 17, the root node (R) and all branches. A mark value MARK of the node (B) is generated and assigned to the corresponding root node (R) and branch node (B) to generate new scene graph data SCENb shown in FIG.

〔行列データMIXの生成処理(ステップST53)〕
CPU14aは、前述したように、ライブラリプログラムLIBaに従って、ステップST52で生成された図17に示すシーングラフデータSCENbを基に、以下に示すように、行列データMIXの生成処理を行う。
CPU14aは、変数layerに、レイヤー値VLのlayerMin(最小)からlayerMax(最大)を順に選択して設定する。
CPU14aは、変数layerにレイヤー値VLを設定する度に、以下に示すように図17に示すシーングラフデータSCENbをトラバースする。
すなわち、CPU14aは、図17に示すシーングラフデータSCENbのトラバースを、ルートノード(R)から開始する。
CPU14bは、ルートノード(R)の子となるブランチノード(B)のうち、当該ブランチノード(B)に割り当てられたマーク値MARKと変数layerが示すレイヤー値VL(選択されたレイヤー)とが一致するブランチノード(B)を選択する。
[Matrix Data MIX Generation Processing (Step ST53)]
As described above, the CPU 14a performs generation processing of the matrix data MIX as described below based on the scene graph data SCENb shown in FIG. 17 generated in step ST52 in accordance with the library program LIBa.
The CPU 14a sequentially selects and sets layerMax (maximum) from layerMin (minimum) of the layer value VL to the variable layer.
Each time the CPU 14a sets the layer value VL in the variable layer, the CPU 14a traverses the scene graph data SCENb shown in FIG.
That is, the CPU 14a starts traversing the scene graph data SCENb shown in FIG. 17 from the root node (R).
Among the branch nodes (B) that are children of the root node (R), the CPU 14b matches the mark value MARK assigned to the branch node (B) with the layer value VL (selected layer) indicated by the variable layer. The branch node (B) to be selected is selected.

そして、CPU14aは、上記選択したブランチノード(B)について、その下層のブランチノード(B)およびリーフノード(L)のトラバースを行う。
一方、CPU14aは、上記選択しないブランチノード(B)についてはその下層のブランチノード(B)およびリーフノード(L)のトラバースを行わない(すなわち、トラースをスキップする)。これにより、変数layerを更新する度に、全てのリーフノード(L)をトラバースする必要がなくなり、処理負荷の軽減、処理時間の短縮を図れる。
CPU14aは、上記トラバースにより、選択したリーフノード(L)に対応した行列データMIXをグラフィックアクセラレータ11に出力した後に、当該選択したリーフノード(L)に対応付けられたマーク値MARKを、変数layerの設定範囲より大きい値、例えば「100」に更新する。
Then, the CPU 14a traverses the branch node (B) and the leaf node (L) below the selected branch node (B).
On the other hand, the CPU 14a does not traverse the branch node (B) and the leaf node (L) below the branch node (B) not selected (that is, skips the trace). This eliminates the need to traverse all leaf nodes (L) each time the variable layer is updated, thereby reducing processing load and processing time.
After the CPU 14a outputs the matrix data MIX corresponding to the selected leaf node (L) to the graphic accelerator 11 by the traverse, the CPU 14a uses the mark value MARK associated with the selected leaf node (L) as the variable layer. The value is updated to a value larger than the set range, for example, “100”.

以下、CPU14aが、変数layerに「−2」〜「2」を順に設定して行うトラバース処理を説明する。
変数layerに「−2」が設定された場合:
CPU14aは、ルートノード(R)のマーク値MARKである「−1」を見て、変数layerの設定値「−1」と一致しないため、その下層ノードのトラバースをスキップする。
次に、CPU14aは、変数layerに「−1」を設定する。
Hereinafter, a traverse process performed by the CPU 14a by sequentially setting “−2” to “2” in the variable layer will be described.
When "-2" is set in the variable layer:
The CPU 14a sees “−1”, which is the mark value MARK of the root node (R), and does not match the set value “−1” of the variable layer, and therefore skips the traversal of the lower layer node.
Next, the CPU 14a sets “−1” in the variable layer.

変数layerに「−1」が設定された場合:
変数layerに「−1」が設定された場合に、CPU14aは、例えば、図17に示すルートノード(R)の子であるブランチノード60,65のマーク値MARKである「−1」,「0」を見て、変数layerの設定値「−1」と一致するブランチノード60を選択し、ブランチノード65を選択しない。すなわち、ブランチノード65の下層ノードのトラバースをスキップする。
次に、CPU14aは、上記選択したブランチノード60の子であるブランチノード61,62,64のマーク値MARKである「−1」,「1」,「1」を見て、変数layerの設定値「−1」と一致するブランチノード61を選択し、ブランチノード62,64を選択しない。すなわち、ブランチノード62,64の下層ノードのトラバースをスキップする。
次に、CPU14aは、上記選択したブランチノード61の子であるリーフノード41,42,43のレイヤー値である「−1」,「−1」,「−1」を見て、変数layerの設定値「−1」と一致するリーフノード41,42,43選択する。
次に、CPU14aは、上記選択したリーフノード41,42,43に割り当てられた画像オブジェクトデータを示す行列と、当該リーフノードからルートノード(R)までの経路に位置するブランチノード60,61に対応付けられた演算を示す行列とを、行列データMIXとしてグラフィックアクセラレータ11に出力する。
そして、CPU14aは、図18に示すように、下層に位置するリーフノード(L)が全て選択されたブランチノード61のマーク値MARKを「100」に更新する。
When "-1" is set in the variable layer:
When “−1” is set in the variable layer, the CPU 14a, for example, “−1”, “0” that are the mark values MARK of the branch nodes 60 and 65 that are children of the root node (R) shown in FIG. ”, The branch node 60 that matches the set value“ −1 ”of the variable layer is selected, and the branch node 65 is not selected. That is, the traversal of the node below the branch node 65 is skipped.
Next, the CPU 14a looks at the mark values MARK "-1", "1", "1" of the branch nodes 61, 62, 64 that are children of the selected branch node 60, and sets the value of the variable layer The branch node 61 that matches “−1” is selected, and the branch nodes 62 and 64 are not selected. That is, the traversal of the lower node of the branch nodes 62 and 64 is skipped.
Next, the CPU 14a looks at the layer values “−1”, “−1”, and “−1” of the leaf nodes 41, 42, and 43 that are children of the selected branch node 61, and sets the variable layer. Leaf nodes 41, 42, and 43 that match the value “−1” are selected.
Next, the CPU 14a corresponds to the matrix indicating the image object data assigned to the selected leaf nodes 41, 42, and 43, and the branch nodes 60 and 61 located on the route from the leaf node to the root node (R). A matrix indicating the added operation is output to the graphic accelerator 11 as matrix data MIX.
Then, as illustrated in FIG. 18, the CPU 14 a updates the mark value MARK of the branch node 61 in which all the leaf nodes (L) located in the lower layers are selected to “100”.

変数layerに「0」が設定された場合:
変数layerに「0」が設定された場合に、CPU14aは、図18に示すシーングラフデータSCENbのルートノード(R)の子であるブランチノード60,65のマーク値MARKである「1」,「0」を見て、変数layerの設定値「0」と一致するブランチノード65を選択し、ブランチノード60を選択しない。すなわち、ブランチノード60の下層ノードのトラバースをスキップする。
次に、CPU14aは、上記選択したブランチノード65の子であるブランチノード66,67のマーク値MARKである「0」,「0」を見て、変数layerの設定値「0」と一致するため、ブランチノード66,67の双方を選択する。
次に、CPU14aは、上記選択したブランチノード66の子であるリーフノード49,50,51,52のレイヤー値である「0」,「0」,「0」,「0」を見て、変数layerの設定値「0」と一致するため、これらを全て選択する。
次に、CPU14aは、上記選択したブランチノード67の子であるリーフノード53,54のレイヤー値である「0」,「0」を見て、変数layerの設定値「0」と一致するため、これらを全て選択する。
次に、CPU14aは、上記選択したリーフノード49〜54に割り当てられた画像オブジェクトデータを示す行列と、当該リーフノードからルートノード(R)までの経路に位置するブランチノード65,66,67に対応付けられた演算を示す行列とを、行列データMIXとしてグラフィックアクセラレータ11に出力する。
そして、CPU14aは、図19に示すように、下層に位置するリーフノード(L)が全て選択されたブランチノード65,66,67のマーク値MARKを「100」に更新する。
When “0” is set in the variable layer:
When “0” is set in the variable layer, the CPU 14a sets “1”, “1”, which are the mark values MARK of the branch nodes 60, 65 that are children of the root node (R) of the scene graph data SCENb shown in FIG. Looking at “0”, the branch node 65 that matches the set value “0” of the variable layer is selected, and the branch node 60 is not selected. That is, the traversal of the node below the branch node 60 is skipped.
Next, the CPU 14a looks at “0” and “0” which are the mark values MARK of the branch nodes 66 and 67 which are children of the selected branch node 65, and matches the set value “0” of the variable layer. , Both branch nodes 66 and 67 are selected.
Next, the CPU 14a looks at the layer values “0”, “0”, “0”, “0” of the leaf nodes 49, 50, 51, 52 that are children of the selected branch node 66, and sets the variable All of these are selected because they match the set value “0” of the layer.
Next, the CPU 14a looks at the layer values “0” and “0” of the leaf nodes 53 and 54 that are children of the selected branch node 67 and matches the set value “0” of the variable layer. Select all of these.
Next, the CPU 14a corresponds to the matrix indicating the image object data assigned to the selected leaf nodes 49 to 54 and the branch nodes 65, 66, and 67 located on the route from the leaf node to the root node (R). A matrix indicating the added operation is output to the graphic accelerator 11 as matrix data MIX.
Then, as illustrated in FIG. 19, the CPU 14 a updates the mark value MARK of the branch nodes 65, 66, and 67 in which all the leaf nodes (L) located in the lower layers are selected to “100”.

変数layerに「1」が設定された場合:
変数layerに「1」が設定された場合に、CPU14aは、例えば、図19に示すシーングラフデータSCENbのルートノード(R)の子であるブランチノード60,65のマーク値MARKである「1」,「100」を見て、変数layerの設定値「1」と一致するブランチノード60を選択し、ブランチノード65を選択しない。すなわち、ブランチノード65の下層ノードのトラバースをスキップする。
次に、CPU14aは、上記選択したブランチノード60の子であるブランチノード61,62,64のマーク値MARKである「100」,「1」,「1」を見て、変数layerの設定値「1」と一致するため、ブランチノード62,64を選択し、ブランチノード61を選択しない。すなわち、ブランチノード61の下層ノードのトラバースをスキップする。
次に、CPU14aは、上記選択したブランチノード62の子であるブランチノード63のマーク値MARKである「1」を見て、変数layerの設定値「1」と一致するため、ブランチノード63を選択する。
次に、CPU14aは、上記選択したブランチノード63の子であるリーフノード44,45のレイヤー値VLである「1」,「2」を見て、変数layerの設定値「1」と一致するリーフノード44を選択し、リーフノード45を選択しない。
一方、CPU14aは、上記選択したブランチノード62の子であるリーフノード46,47のレイヤー値VLである「1」,「1」を見て、変数layerの設定値「1」と一致するため、リーフノード46,47を選択する。
また、CPU14aは、上記選択したブランチノード64の子であるリーフノード48のレイヤー値VLである「1」を見て、変数layerの設定値「1」と一致するため、リーフノード48を選択する。
次に、CPU14aは、上記選択したリーフノード44,46,47,48に割り当てられた画像オブジェクトデータを示す行列と、当該リーフノードからルートノード(R)までの経路に位置するブランチノード60,62,63,64に対応付けられた演算を示す行列とを、行列データMIXとしてグラフィックアクセラレータ11に出力する。
そして、CPU14aは、図20に示すように、下層に位置するリーフノード(L)が全て選択されたブランチノード64のマーク値MARKを「100」に更新する。
When “1” is set in the variable layer:
When “1” is set in the variable layer, the CPU 14a, for example, “1” that is the mark value MARK of the branch nodes 60 and 65 that are children of the root node (R) of the scene graph data SCENb shown in FIG. , “100”, the branch node 60 that matches the set value “1” of the variable layer is selected, and the branch node 65 is not selected. That is, the traversal of the node below the branch node 65 is skipped.
Next, the CPU 14 a looks at the mark values MARK “100”, “1”, “1” of the branch nodes 61, 62, 64 that are children of the selected branch node 60, and sets the value “ Since it matches “1”, the branch nodes 62 and 64 are selected, and the branch node 61 is not selected. That is, the traverse of the lower node of the branch node 61 is skipped.
Next, the CPU 14a looks at “1” which is the mark value MARK of the branch node 63 which is a child of the selected branch node 62, and selects the branch node 63 because it matches the set value “1” of the variable layer. To do.
Next, the CPU 14a looks at the layer values VL “1” and “2” of the leaf nodes 44 and 45 that are children of the selected branch node 63, and matches the set value “1” of the variable layer. Node 44 is selected and leaf node 45 is not selected.
On the other hand, the CPU 14a looks at “1” and “1” that are the layer values VL of the leaf nodes 46 and 47 that are children of the selected branch node 62 and matches the set value “1” of the variable layer. Leaf nodes 46 and 47 are selected.
Further, the CPU 14a looks at “1” that is the layer value VL of the leaf node 48 that is a child of the selected branch node 64, and matches the set value “1” of the variable layer, and therefore selects the leaf node 48. .
Next, the CPU 14a displays a matrix indicating the image object data assigned to the selected leaf nodes 44, 46, 47, and 48, and branch nodes 60 and 62 located on the route from the leaf node to the root node (R). , 63, and 64 are output to the graphic accelerator 11 as matrix data MIX.
Then, as illustrated in FIG. 20, the CPU 14 a updates the mark value MARK of the branch node 64 in which all the leaf nodes (L) located in the lower layers are selected to “100”.

変数layerに「2」が設定された場合:
変数layerに「2」が設定された場合に、CPU14aは、例えば、図20に示すシーングラフデータSCENbのルートノード(R)の子であるブランチノード60,65のマーク値MARKである「2」,「100」を見て、変数layerの設定値「2」と一致するブランチノード60を選択し、ブランチノード65を選択しない。
次に、CPU14aは、上記選択したブランチノード60の子であるブランチノード61,62,64のマーク値MARKである「100」,「2」,「100」を見て、変数layerの設定値「2」と一致するブランチノード62を選択し、ブランチノード61,64を選択しない。すなわち、ブランチノード61,64の下層ノードのトラバースをスキップする。
次に、CPU14aは、上記選択したブランチノード62の子であるブランチノード63のマーク値MARKである「2」を見て、変数layerの設定値「2」と一致するため、これを選択する。
次に、CPU14aは、上記選択したブランチノード63の子であるリーフノード44,45のレイヤー値VLである「1」,「2」を見て、変数layerの設定値「2」と一致するリーフノード45を選択し、リーフノード44を選択しない。
一方、CPU14aは、上記選択したブランチノード62の子であるリーフノード46,47のレイヤー値VLである「1」,「1」を見て、変数layerの設定値「2」と一致しないため、これらを選択しない。
次に、CPU14aは、上記選択したリーフノード45に割り当てられた画像オブジェクトデータを示す行列と、当該リーフノードからルートノード(R)までの経路に位置するブランチノード60,62,63に対応付けられた演算を示す行列とを、行列データMIXとしてグラフィックアクセラレータ11に出力する。
そして、CPU14aは、図21に示すように、下層に位置するリーフノード(L)が全て選択されたルートノード(R)およびブランチノード60,62,63のマーク値MARKを「100」に更新する。
When “2” is set in the variable layer:
When “2” is set in the variable layer, the CPU 14a, for example, “2” that is the mark value MARK of the branch nodes 60 and 65 that are children of the root node (R) of the scene graph data SCENb shown in FIG. , “100”, the branch node 60 that matches the set value “2” of the variable layer is selected, and the branch node 65 is not selected.
Next, the CPU 14 a looks at the mark values MARK “100”, “2”, “100” of the branch nodes 61, 62, 64 that are children of the selected branch node 60, and sets the variable layer set value “ The branch node 62 that matches “2” is selected, and the branch nodes 61 and 64 are not selected. That is, the traversal of the lower node of the branch nodes 61 and 64 is skipped.
Next, the CPU 14a looks at “2” that is the mark value MARK of the branch node 63 that is a child of the selected branch node 62, and selects it because it matches the set value “2” of the variable layer.
Next, the CPU 14a looks at “1” and “2” that are the layer values VL of the leaf nodes 44 and 45 that are children of the selected branch node 63, and matches the set value “2” of the variable layer. Node 45 is selected and leaf node 44 is not selected.
On the other hand, since the CPU 14a sees “1” and “1” which are the layer values VL of the leaf nodes 46 and 47 which are children of the selected branch node 62, it does not match the set value “2” of the variable layer. Do not select these.
Next, the CPU 14a is associated with the matrix indicating the image object data assigned to the selected leaf node 45 and the branch nodes 60, 62, 63 located on the route from the leaf node to the root node (R). The matrix indicating the calculated operation is output to the graphic accelerator 11 as matrix data MIX.
Then, as shown in FIG. 21, the CPU 14a updates the mark value MARK of the root node (R) and branch nodes 60, 62, and 63 where all the leaf nodes (L) located in the lower layer are selected to “100”. .

図22は、CPU14aによるトラバース処理を説明するためのフローチャートである。 以下、図22に示す各ステップを説明する。
ステップST81:
CPU14aは、ルートノード(R)に対応付けられたマーク値MARKを、layerMinを変数layerに設定する。
ステップST82:
CPU14aは、図17に示すシーングラフデータSCENb内のルートノ−ドRの下層ノードのトラバースを開始する。
FIG. 22 is a flowchart for explaining traversing processing by the CPU 14a. Hereinafter, each step shown in FIG. 22 will be described.
Step ST81:
The CPU 14a sets the mark value MARK associated with the root node (R) and the layerMin in the variable layer.
Step ST82:
The CPU 14a starts traversing the lower node of the root node R in the scene graph data SCENb shown in FIG.

ステップST83:
CPU14aは、上記トラバースにより、ノードに到達する。
ステップST84:
CPU14aは、ステップST83で到達したノードがブランチノード(B)であるか否かを判断し、ブランチノード(B)である場合にステップST87に進み、そうでない場合にステップST85に進む。
ステップST85:
CPU14aは、ステップST83で到達したノードがルートノード(R)であるか否かを判断し、ルートノード(R)である場合にステップST92に進み、そうでない場合にステップST86に進む。
ステップST86:
CPU14aは、ステップST83で到達したノードがリーフノード(L)であると判断する。
ステップST87:
CPU14aは、ステップST83で到達したノードのマーク値MARKが、変数layerの設定値と一致するか否かを判断し、一致する場合にステップST89に進み、一致しない場合にステップST88に進む。
Step ST83:
The CPU 14a reaches the node by the traverse.
Step ST84:
The CPU 14a determines whether or not the node reached in step ST83 is a branch node (B). If the node is a branch node (B), the process proceeds to step ST87, and if not, the process proceeds to step ST85.
Step ST85:
The CPU 14a determines whether or not the node reached in step ST83 is the root node (R). If the node is the root node (R), the process proceeds to step ST92. If not, the process proceeds to step ST86.
Step ST86:
The CPU 14a determines that the node reached in step ST83 is a leaf node (L).
Step ST87:
The CPU 14a determines whether or not the mark value MARK of the node reached in step ST83 matches the set value of the variable layer. If they match, the process proceeds to step ST89, and if they do not match, the process proceeds to step ST88.

ステップST88:
CPU14aは、ステップST83で到達した上記ブランチノード(B)の下層ノードのトラバースに行わない(スキップする)。
CPU14aは、ステップST88の処理を終了した後に、再び、シーングラフデータSCENb内の上記スキップした下層ノード以外のノードのトラバースを行う。
ステップST89:
CPU14aは、ステップST83で到達したノード(ブランチノード(B))の下層のトラバースに進む。
Step ST88:
The CPU 14a does not perform (skip) the traverse of the lower layer node of the branch node (B) reached in step ST83.
After completing the process in step ST88, the CPU 14a again traverses nodes other than the skipped lower layer node in the scene graph data SCENb.
Step ST89:
The CPU 14a proceeds to the traverse below the node (branch node (B)) reached in step ST83.

ステップST90:
CPU14aは、ステップST83で到達したリーフノード(L)に対応付けられたマーク値MARKと、変数layer値の設定値とが一致するか否かを判断し、一致する場合にステップST91に進む。
一方、CPU14aは、上記一致しない場合に、ステップST82に進み、他の下層ノードをトラバースする。
ステップST91:
CPU14aは、ステップST83で到達したリーフノード(L)に割り当てられた画像オブジェクトデータを示す行列と、当該リーフノードからルートノード(R)までの経路に位置するブランチノードに対応付けられた演算を示す行列とを行列データMIXとしてグラフィックアクセラレータ11に出力する。すなわち、CPU14aは、当該リーフノード(L)に対応した描画処理をグラフィックアクセラレータ11に行わせる。
Step ST90:
The CPU 14a determines whether or not the mark value MARK associated with the leaf node (L) reached in step ST83 matches the set value of the variable layer value. If they match, the process proceeds to step ST91.
On the other hand, the CPU 14a proceeds to step ST82 and traverses other lower-layer nodes when they do not match.
Step ST91:
The CPU 14a indicates a matrix indicating the image object data assigned to the leaf node (L) reached in step ST83, and an operation associated with the branch node located on the route from the leaf node to the root node (R). The matrix is output to the graphic accelerator 11 as matrix data MIX. That is, the CPU 14a causes the graphic accelerator 11 to perform drawing processing corresponding to the leaf node (L).

ステップST92:
CPU14aは、最終的に描画を行ったリーフノード(L)を基に、下層に位置するリーフノード(L)が全て選択されたルートノード(R)およびブランチノードのマーク値MARKを「100」に更新する。
ステップST93:
CPU14aは、ルートノード(R)のマーク値MARKが、レイヤー値VLの最大値であるlayerMaxであるか否かを判断し、そうである場合に処理をシーングラフデータSCENbについて処理を終了し、そうでない場合にステップST81に進む。
Step ST92:
The CPU 14a sets the mark value MARK of the root node (R) and branch node from which all the leaf nodes (L) located in the lower layer are selected to “100” based on the leaf node (L) that has finally drawn. Update.
Step ST93:
The CPU 14a determines whether or not the mark value MARK of the root node (R) is layerMax which is the maximum value of the layer value VL. If so, the process is finished for the scene graph data SCENb. If not, the process proceeds to step ST81.

本実施形態のデータ処理装置1aによれば、CPU14aがライブラリプログラムLIBaに従って上述したようにシーングラフデータSCENのトラバースのスキップを必要に応じて行うことで、各レイヤー値VL毎にシーングラフデータSCEN内の全てのノードをトラバースする従来のシステムに比べて、トラバースに伴う処理量を削減でき、処理時間を短縮できる。そのため、携帯電話などのCPUのパフォーマンスが低い機器にも導入できる。
また、データ処理装置1aによれば、ビット演算を伴わないため、ビット演算をサポートしていないプログラム言語でも実装できる。
According to the data processing device 1a of the present embodiment, the CPU 14a skips the traversal of the scene graph data SCEN as necessary according to the library program LIBa as described above, so that each layer value VL contains the scene graph data SCEN. Compared with the conventional system that traverses all the nodes, the amount of processing accompanying traversing can be reduced, and the processing time can be shortened. For this reason, it can be introduced into a device such as a mobile phone having low CPU performance.
Moreover, since the data processing device 1a does not involve bit operation, it can be implemented even in a program language that does not support bit operation.

上述した第1および第2実施形態は、例えばシーングラフに含まれるノードのうち、大部分のノードのレイヤー値がデフォルトの値で、一部にのみ局所的に他の値が設定されている場合や、使われているレイヤーの数が少数の場合、さらには全てのノードのレイヤー値がデフォルトの値の場合など、シーングラフの構成によってはソート処理を行わなくて良い分、ソートアルゴリズムよりもパフォーマンスが良い。
さらに、シーングラフの一部分のみを描画する場合でも全く同じ手順でよく、アルゴリズムが簡潔なこととあわせ、プログラムサイズを小さくすることができる。これは携帯電話など計算機のリソースが限られた環境に対しては有効な実装方法である。
In the first and second embodiments described above, for example, among the nodes included in the scene graph, the layer values of most of the nodes are the default values, and other values are locally set only in some of the nodes. If the number of layers used is small, or the layer values of all nodes are the default values, the sort graph may not be sorted depending on the configuration of the scene graph. Is good.
Furthermore, even when only a part of the scene graph is drawn, the same procedure may be used, and the program size can be reduced together with the simplicity of the algorithm. This is an effective implementation method for environments where the resources of computers such as mobile phones are limited.

本発明は、例えば、3次元画像の表示を行うデータ処理装置に適用可能である。   The present invention is applicable to, for example, a data processing apparatus that displays a three-dimensional image.

図1は、シーングラフの一例を模式的に表した図である。FIG. 1 is a diagram schematically showing an example of a scene graph. 図2は、図1のシーングラフをトラバースする様子を模式的に示したものである。FIG. 2 schematically shows how the scene graph of FIG. 1 is traversed. 図3は、ブランチノードを用いたシーングラフの一例を説明するための図である。FIG. 3 is a diagram for explaining an example of a scene graph using branch nodes. 図4は、本発明の関連技術を説明するたべの図である。FIG. 4 is a diagram for explaining the related art of the present invention. 図5は、本発明の関連技術を説明するたべの図である。FIG. 5 is a diagram for explaining the related art of the present invention. 図6は、本発明の第1実施形態に係わるデータ処理装置の構成図である。FIG. 6 is a configuration diagram of the data processing apparatus according to the first embodiment of the present invention. 図7は、図6に示すデータ処理装置の処理手順を説明するための図である。FIG. 7 is a diagram for explaining the processing procedure of the data processing apparatus shown in FIG. 図8は、図6に示すCPUが、ライブラリプログラムに従って実行する処理の手順を説明するためのフロ−チャートである。FIG. 8 is a flowchart for explaining a procedure of processing executed by the CPU shown in FIG. 6 according to the library program. 図9は、図6に示すCPUが、プログラムRPGを基に生成するシーングラフを説明するための図である。FIG. 9 is a diagram for explaining a scene graph generated by the CPU shown in FIG. 6 based on the program RPG. 図10は、図6に示すCPUが、ライブラリプログラムを基に生成するシーングラフデータを説明するための図である。FIG. 10 is a diagram for explaining scene graph data generated by the CPU shown in FIG. 6 based on the library program. 図11は、変数layerに「−1」が設定された場合の図6に示すCPUによるトラバース処理を説明するための図である。FIG. 11 is a diagram for explaining the traversing process by the CPU shown in FIG. 6 when “−1” is set in the variable layer. 図12は、変数layerに「0」」が設定された場合の図6に示すCPUによるトラバース処理を説明するための図である。FIG. 12 is a diagram for explaining the traversing process by the CPU shown in FIG. 6 when “0” is set in the variable layer. 図13は、変数layerに「1」が設定された場合の図6に示すCPUによるトラバース処理を説明するための図である。FIG. 13 is a diagram for explaining traversing processing by the CPU shown in FIG. 6 when “1” is set in the variable layer. 図14は、変数layerに「2」が設定された場合の図6に示すCPUによるトラバース処理を説明するための図である。FIG. 14 is a diagram for explaining the traversing process by the CPU shown in FIG. 6 when “2” is set in the variable layer. 図15は、本発明の第1実施形態において図6に示すCPUによるトラバース処理を説明するためのフローチャートである。FIG. 15 is a flowchart for explaining traversing processing by the CPU shown in FIG. 6 in the first embodiment of the present invention. 図16は、本発明の第2実施形態におけるデータ処理装置の処理手順を説明するためのフローチャートである。FIG. 16 is a flowchart for explaining the processing procedure of the data processing apparatus according to the second embodiment of the present invention. 図17は、本発明の第2実施形態におけるデータ処理装置が、ライブラリプログラムに従って生成するシーングラフデータを説明するための図である。FIG. 17 is a diagram for explaining scene graph data generated by the data processing apparatus according to the second embodiment of the present invention in accordance with the library program. 図18は、本発明の第2実施形態において、変数layerに「−1」についての処理が完了した後のシーングラフの各ノードに割り当てられたマーク値を説明するための図である。FIG. 18 is a diagram for explaining the mark values assigned to each node of the scene graph after the process for “−1” is completed for the variable layer in the second embodiment of the present invention. 図19は、本発明の第2実施形態において、変数layerに「0」についての処理が完了した後のシーングラフの各ノードに割り当てられたマーク値を説明するための図である。FIG. 19 is a diagram for explaining the mark values assigned to each node of the scene graph after the process for “0” is completed for the variable layer in the second embodiment of the present invention. 図20は、本発明の第2実施形態において、変数layerに「1」についての処理が完了した後のシーングラフの各ノードに割り当てられたマーク値を説明するための図である。FIG. 20 is a diagram for explaining the mark values assigned to each node of the scene graph after the processing for “1” is completed in the variable layer in the second embodiment of the present invention. 図21は、本発明の第2実施形態において、変数layerに「2」についての処理が完了した後のシーングラフの各ノードに割り当てられたマーク値を説明するための図である。FIG. 21 is a diagram for explaining the mark values assigned to each node of the scene graph after the process for “2” is completed in the variable layer in the second embodiment of the present invention. 図22は、本発明の第2実施形態においてCPUによるトラバース処理を説明するためのフローチャートである。FIG. 22 is a flowchart for explaining traversing processing by the CPU in the second embodiment of the present invention.

符号の説明Explanation of symbols

1,1a…データ処理装置、10…入力部、11…グラフィックアクセラレータ、12…モニタ、13,13a…メモリ、14,14a…CPU、PRG…プログラム、LIB,LIBa…ライブラリプログラム
DESCRIPTION OF SYMBOLS 1,1a ... Data processing apparatus, 10 ... Input part, 11 ... Graphic accelerator, 12 ... Monitor, 13, 13a ... Memory, 14, 14a ... CPU, PRG ... Program, LIB, LIBa ... Library program

Claims (9)

ツリーを構成する複数のノードに描画処理が割り当てられ、前記ノードの各々に、当該ノードに割り当てられた前記描画処理を複数の処理段階のうち何れの前記処理段階で実行するかを示す実行段階データが対応付けられ、前記複数の処理段階を順に選択し、当該選択された処理段階で、当該選択された処理段階を示す前記実行段階データに対応付けられた前記ノードに割り当てられた前記描画処理が実行されるように制御するデータ処理装置が実行するプログラムであって、
前記データ処理装置は、前記描画処理の前処理を行う前処理手段と、前記描画処理を実行する実行制御手段と、を有し、
前記前処理手段が、前記実行段階データを基に、前記ツリーを構成する前記複数のノードのうち少なくとも前記ツリー上で下層ノードが存在するノードの各々について、前記選択された処理段階で前記下層ノードの描画処理を実行するか否かを示す指標データを当該ノードに対応付ける第1の手順と、
前記実行制御手段が、前記複数の処理段階を順に選択し、当該選択した処理段階において、前記ツリーをルートノードからリーフノードに向けて探索し、当該探索の過程でノードに達すると、当該ノードに前記第1の手順で対応付けられた前記指標データが当該選択された処理段階において前記下層ノードの描画処理を実行することを示している場合には、当該ノードの前記下層ノードを探索し、前記探索によって達したノードのうち、当該ノードに対応付けられた前記実行段階データが前記選択した処理段階を示す前記ノードに割り当てられた描画処理の実行開始を決定し、前記下層ノードの描画処理を実行することを示していない場合には、当該ノードの前記下層ノードの探索をスキップする第2の手順と、
を前記データ処理装置に実行させるプログラム。
Execution stage data indicating which drawing process is assigned to a plurality of nodes constituting the tree, and each of the nodes executes the drawing process assigned to the node in a plurality of processing stages. Is selected, and the drawing process assigned to the node associated with the execution stage data indicating the selected processing stage is selected in the selected processing stage. A program executed by a data processing device that controls to be executed,
The data processing device includes preprocessing means for performing preprocessing of the drawing processing, and execution control means for executing the drawing processing,
Based on the execution stage data , the pre-processing means is configured to select the lower layer node in the selected processing stage for each of the nodes in which at least a lower layer node exists on the tree among the plurality of nodes constituting the tree. A first procedure for associating index data indicating whether or not to execute the drawing process with the node;
The execution control means sequentially selects the plurality of processing steps, and in the selected processing step, searches for the tree from a root node toward a leaf node. when the identification information indicates that the index data associated with the first procedure is to perform the drawing process of the lower layer node in the selected process step, searches said lower node of the node, wherein Among the nodes reached by the search, the execution stage data associated with the node determines the start of the drawing process assigned to the node indicating the selected processing stage, and executes the drawing process of the lower node. If not, a second procedure for skipping the search for the lower node of the node ;
For causing the data processing apparatus to execute the program.
前記第1の手順において、前記前処理手段は、前記ツリーを構成する前記複数のノードの各々について、前記複数の処理段階の各々に対応付けられた複数のビットで構成され、当該ノードの前記下層ノードに対応付けられた前記実行段階データが示す実行段階に対応付けられた前記ビットを第1の論理値に設定し、それ以外の前記ビットを第2の論理値に設定した前記指標データを生成し、当該指標データを当該ノードに対応付け、
前記第2の手順において、前記実行制御手段は、前記探索により前記ノードに達すると、当該ノードに前記第1の手順で対応付けられた前記指標データを構成する前記複数のビットのうち前記選択した処理段階に対応付けられた前記ビットに前記第1の論理値が設定されていることを条件に当該ノードの前記下層ノードを探索する
請求項1に記載のプログラム。
In the first procedure , the pre-processing means includes , for each of the plurality of nodes constituting the tree, a plurality of bits associated with each of the plurality of processing stages, and the lower layer of the node Generating the index data in which the bit associated with the execution stage indicated by the execution stage data associated with the node is set to a first logical value and the other bits are set to a second logical value The index data is associated with the node,
In the second procedure , when the execution control means reaches the node by the search, the execution control means selects the selected one of the plurality of bits constituting the index data associated with the node in the first procedure . The program according to claim 1, wherein the lower layer node of the node is searched on condition that the first logical value is set in the bit associated with a processing stage.
前記第1の手順において、前記前処理手段は、前記ツリーを構成する前記複数のノードの各々について、当該ノードの前記下層ノードに対応付けられた前記実行段階データが示す実行段階のうち、最も早い実行段階を示す前記指標データを対応付け、
前記第2の手順において、前記実行制御手段は、前記探索により前記ノードに達すると、当該ノードに前記第1の手順で対応付けられた前記指標データが前記選択した処理段階を示すことを条件に当該ノードの前記下層ノードを探索して、前記選択した処理段階を前記実行段階データが示すノードに割り当てられた描画処理の実行開始を決定し、前記実行開始が既に決定されたノードに対応付けられた前記実行段階データを非実行を示すように更新し、当該ノードの上層に位置する上層ノードの前記指標データを前記更新の結果を反映させて更新する
請求項1に記載のプログラム。
In the first procedure , the preprocessing means is the earliest of the execution stages indicated by the execution stage data associated with the lower node of the node for each of the plurality of nodes constituting the tree. Associating the indicator data indicating the execution stage,
In the second procedure , when the execution control means reaches the node by the search, the index data associated with the node in the first procedure indicates the selected processing stage. The lower layer node of the node is searched, the selected processing stage is determined to start execution of the drawing process assigned to the node indicated by the execution stage data, and the execution start is associated with the already determined node. The program according to claim 1, wherein the execution stage data is updated to indicate non-execution, and the index data of an upper layer node located in an upper layer of the node is updated to reflect the update result.
前記ノードには、当該ノードに割り当てられた描画処理を規定する演算データあるいは属性データが割り当てられ、
前記第2の手順において、前記実行制御手段は、前記実行開始を決定した前記ノードに割り当てられた前記演算データあるいは前記属性データを、前記描画処理の実行先に出力する
請求項1に記載のプログラム。
The node is assigned calculation data or attribute data that defines the rendering process assigned to the node,
2. The program according to claim 1, wherein in the second procedure, the execution control unit outputs the calculation data or the attribute data assigned to the node that has decided to start the execution to an execution destination of the drawing process. .
前記ノードには、当該ノードに割り当てられた画像オブジェクトと、前記画像オブジェクトの画面上の表示位置と、前記画像オブジェクトの画面に表示するときの姿勢あるいは拡大縮小を規定する演算との少なくとも一つが割り当てられている
請求項4に記載のプログラム。
The node is assigned with at least one of an image object assigned to the node, a display position of the image object on the screen, and an operation for specifying a posture or enlargement / reduction when the image object is displayed on the screen. The program according to claim 4.
ツリーを構成する複数のノードに描画処理が割り当てられ、前記ノードの各々に、当該ノードに割り当てられた前記描画処理を複数の処理段階のうち何れの前記処理段階で実行するかを示す実行段階データが対応付けられ、前記複数の処理段階を順に選択し、当該選択された処理段階で、当該選択された処理段階を示す前記実行段階データに対応付けられた前記ノードに割り当てられた前記描画処理が実行されるように制御するデータ処理装置であって、
前記実行段階データを基に、前記ツリーを構成する前記複数のノードのうち少なくとも前記ツリー上で下層ノードが存在するノードの各々について、前記選択された処理段階で前記下層ノードの描画処理を実行するか否かを示す指標データを当該ノードに対応付ける前処理手段と、
前記複数の処理段階を順に選択し、当該選択した処理段階において、前記ツリーをルートノードからリーフノードに向けて探索し、当該探索の過程でノードに達すると、前記前処理手段が当該ノードに対応付けた前記指標データが当該選択された処理段階において前記下層ノードの描画処理を実行することを示している場合には、当該ノードの前記下層ノードを探索し、前記探索によって達したノードのうち、当該ノードに対応付けられた前記実行段階データが前記選択した処理段階を示す前記ノードに割り当てられた描画処理の実行開始を決定し、前記下層ノードの描画処理を実行することを示していない場合には、当該ノードの前記下層ノードの探索をスキップする実行制御手段と、
を有するデータ処理装置。
Execution stage data indicating which drawing process is assigned to a plurality of nodes constituting the tree, and each of the nodes executes the drawing process assigned to the node in a plurality of processing stages. Is selected, and the drawing process assigned to the node associated with the execution stage data indicating the selected processing stage is selected in the selected processing stage. A data processing device that controls to be executed,
Based on the execution stage data, the drawing process of the lower layer node is executed in the selected processing stage for each of the nodes in which the lower level node exists on the tree among the plurality of nodes constituting the tree. Preprocessing means for associating index data indicating whether or not to the node;
The plurality of processing steps are selected in order, and in the selected processing step, the tree is searched from the root node toward the leaf node, and when the node is reached in the search process, the preprocessing means corresponds to the node. when attached has the index data indicates that executes the drawing process of the lower layer node in the selected process step, searches said lower node of the node, among the nodes that have reached by the search, When the execution stage data associated with the node does not indicate that the drawing process assigned to the node indicating the selected processing stage is to be started and the lower layer node is to be executed. Execution control means for skipping the search for the lower node of the node ;
A data processing apparatus.
前記ノードには、当該ノードに割り当てられた画像オブジェクトと、前記画像オブジェクトの画面上の表示位置と、前記画像オブジェクトの画面に表示するときの姿勢あるいは拡大縮小を規定する演算との少なくとも一つが割り当てられている
請求項6に記載のデータ処理装置。
The node is assigned with at least one of an image object assigned to the node, a display position of the image object on the screen, and an operation for specifying a posture or enlargement / reduction when the image object is displayed on the screen. The data processing apparatus according to claim 6.
前記ノードには、当該ノードに割り当てられた描画処理を規定する演算データあるいは属性データが割り当てられており、
前記実行制御手段が実行開始を決定した前記ノードに割り当てられた描画処理を実行する実行手段
をさらに有し、
前記実行制御手段は、前記実行開始を決定した前記ノードに割り当てられた前記演算データあるいは前記属性データを前記実行手段に出力し、
前記実行手段は、前記実行制御手段から入力した前記演算データあるいは前記属性デー
タを基に前記処理を行う
請求項6に記載のデータ処理装置。
The node is assigned calculation data or attribute data that defines the drawing process assigned to the node,
The execution control means further includes execution means for executing a drawing process assigned to the node determined to start execution,
The execution control means outputs the calculation data or the attribute data assigned to the node that has determined the execution start to the execution means,
The data processing apparatus according to claim 6, wherein the execution unit performs the process based on the calculation data or the attribute data input from the execution control unit.
ツリーを構成する複数のノードに描画処理が割り当てられ、前記ノードの各々に、当該ノードに割り当てられた前記描画処理を複数の処理段階のうち何れの前記処理段階で実行するかを示す実行段階データが対応付けられ、前記複数の処理段階を順に選択し、当該選択された処理段階で、当該選択された処理段階を示す前記実行段階データに対応付けられた前記ノードに割り当てられた前記描画処理が実行されるようにデータ処理装置が制御するデータ処理方法であって、
前記データ処理装置は、前記描画処理の前処理を行う前処理手段と、前記描画処理を実行する実行制御手段と、を有し、
前記前処理手段が、前記実行段階データを基に、前記ツリーを構成する前記複数のノードのうち少なくとも前記ツリー上で下層ノードが存在するノードの各々について、前記選択された処理段階で前記下層ノードの処理を実行するか否かを示す指標データを当該ノードに対応付ける第1の工程と、
前記実行制御手段が、前記複数の処理段階を順に選択し、当該選択した処理段階において、前記ツリーをルートノードからリーフノードに向けて探索し、当該探索の過程でノードに達すると、当該ノードに前記第1の工程で対応付けられた前記指標データが当該選択された処理段階において前記下層ノードの描画処理を実行することを示している場合には、当該ノードの前記下層ノードを探索し、前記探索によって達したノードのうち、当該ノードに対応付けられた前記実行段階データが前記選択した処理段階を示す前記ノードに割り当てられた描画処理の実行開始を決定し、前記下層ノードの描画処理を実行することを示していない場合には、当該ノードの前記下層ノードの探索をスキップする第2の工程と、
を有するデータ処理方法。
Execution stage data indicating which drawing process is assigned to a plurality of nodes constituting the tree, and each of the nodes executes the drawing process assigned to the node in a plurality of processing stages. Is selected, and the drawing process assigned to the node associated with the execution stage data indicating the selected processing stage is selected in the selected processing stage. A data processing method controlled by a data processing device to be executed,
The data processing device includes preprocessing means for performing preprocessing of the drawing processing, and execution control means for executing the drawing processing,
Based on the execution stage data , the pre-processing means is configured to select the lower layer node in the selected processing stage for each of the nodes in which at least a lower layer node exists on the tree among the plurality of nodes constituting the tree. A first step of associating index data indicating whether or not to execute the process with the node;
The execution control means sequentially selects the plurality of processing steps, and in the selected processing step, searches for the tree from a root node toward a leaf node. when the identification information indicates that the index data associated with said first step is to perform the drawing process of the lower layer node in the selected process step, searches said lower node of the node, wherein Among the nodes reached by the search, the execution stage data associated with the node determines the start of the drawing process assigned to the node indicating the selected processing stage, and executes the drawing process of the lower node. If not, a second step of skipping the search for the lower node of the node ;
A data processing method.
JP2004059650A 2004-03-03 2004-03-03 Program, data processing apparatus and method thereof Expired - Fee Related JP4424008B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004059650A JP4424008B2 (en) 2004-03-03 2004-03-03 Program, data processing apparatus and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004059650A JP4424008B2 (en) 2004-03-03 2004-03-03 Program, data processing apparatus and method thereof

Publications (2)

Publication Number Publication Date
JP2005250799A JP2005250799A (en) 2005-09-15
JP4424008B2 true JP4424008B2 (en) 2010-03-03

Family

ID=35031230

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004059650A Expired - Fee Related JP4424008B2 (en) 2004-03-03 2004-03-03 Program, data processing apparatus and method thereof

Country Status (1)

Country Link
JP (1) JP4424008B2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4847226B2 (en) * 2006-06-16 2011-12-28 株式会社トヨタIt開発センター Image generation device
JP5076132B1 (en) * 2011-05-25 2012-11-21 株式会社スクウェア・エニックス・ホールディングス Drawing control apparatus, control method therefor, program, recording medium, drawing server, and drawing system
JP6162553B2 (en) * 2013-09-11 2017-07-12 株式会社 ディー・エヌ・エー Image processing apparatus and image processing program
US20230377265A1 (en) * 2022-05-17 2023-11-23 Adobe Inc. Systems for Efficiently Rendering Vector Objects

Also Published As

Publication number Publication date
JP2005250799A (en) 2005-09-15

Similar Documents

Publication Publication Date Title
US6629065B1 (en) Methods and apparata for rapid computer-aided design of objects in virtual reality and other environments
US5566294A (en) Method for visual programming with aid of animation
US6823299B1 (en) Modeling objects, systems, and simulations by establishing relationships in an event-driven graph in a computer implemented graphics system
Zachmann Virtual reality in assembly simulation-collision detection, simulation algorithms, and interaction techniques
US5712964A (en) Computer graphics data display device and method based on a high-speed generation of a changed image
US5414801A (en) Computerized method and apparatus using containment relationships to represent objects in a three-dimensional space, and for moving therethrough
US6175954B1 (en) Computer programming using tangible user interface where physical icons (phicons) indicate: beginning and end of statements and program constructs; statements generated with re-programmable phicons and stored
US5943056A (en) Interference checking method
CA2631639C (en) A method to render a root-less scene graph with a user controlled order of rendering
US4984180A (en) Method for computer aided generator of design reference and apparatus therefor
EP0202686A2 (en) Geometric processing system
JP2003016465A (en) Graphics image generating device, and its method and program
KR20180069461A (en) Method and apparatus for generating acceleration structure
US20140184592A1 (en) Creating, editing, and querying parametric models, e.g., using nested bounding volumes
JP2020503611A (en) Device and method for generating dynamic virtual content in mixed reality
US5600826A (en) Structured data processor for converting between sequential and tree structured data
JP4424008B2 (en) Program, data processing apparatus and method thereof
US8446425B1 (en) Object transformation for object trees utilized with multiprocessor systems
JPH04343138A (en) Fuzzy development system and its operating method
US8665293B2 (en) Automatic draw order
JP2001184500A (en) Geometry pipeline for computer graphics
US9251548B1 (en) Object transformation for object trees utilized with multiprocessor systems
CN107621951A (en) A kind of method and device of view Hierarchical Optimization
US8514247B1 (en) Object trees for multiprocessor systems
Demetrescu et al. Smooth animation of algorithms in a declarative framework

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090806

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090818

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091013

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: 20091117

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091130

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121218

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees