Mercurial > hg > Papers > 2008 > gongo-sigos
view cerium-scene_graph.tex @ 10:887d57278cb6
*** empty log message ***
author | gongo |
---|---|
date | Wed, 26 Mar 2008 12:59:31 +0900 |
parents | fea1ac32de27 |
children | a91e95964045 |
line wrap: on
line source
\subsection{Scene Graph} 本研究では、ゲーム中の一つの場面 (Scene) を構成するオブジェクトやその振る舞い、 ゲームのルールの集合を Scene Graph とする \cite{chiaki} 。 Scene Graph のノードは 親子関係を持つ木構造で構成される (\figref{fig-scene_graph}) 。 そのため、Scene Graph の各ノードに対してデータ並列実行することが 可能と言える。 \begin{figure}[tb] \begin{center} \includegraphics[scale=0.35]{figure/scene_graph.pdf} \caption{Scene Graph Structure} \label{fig-scene_graph} \end{center} \end{figure} Scene Graph Node は以下のようなデータと動作を持つ。 \begin{itemize} \item データ \begin{itemize} \item Vervatim : ポリゴンオブジェクトの頂点座標 \item Texture : ポリゴンオブジェクトのテクスチャ座標 \item TextureImage : テクスチャイメージ \item TransMatrix : ポリゴンオブジェクトの変換行列 \item Coordinates : オブジェクトの座標 \item Angle : オブジェクトの角度 \end{itemize} \item 動作 \begin{itemize} \item Move : 自律的なオブジェクトの動き \item Collision : 他ノードと衝突したときの動き \end{itemize} \end{itemize} Scene Graph の親子関係に沿って TransMatrix を計算し、Move(), Collision() を 実行することで Scene Graph 内のオブジェクトが変化する。 Collision() によって Move() が変更され、Move() によって Coordinates や Angle が変更される。ここが、\figref{fig-cerium} の Transform にあたる。 計算が終わると、Gather で頂点を PolygonPack にまとめる。 PolygonPack は光源の情報とテクスチャの情報、頂点の情報から構成される。 今回は Scene Graph の作成に、オープンソースの 3D モデリングツールである Blender \cite{blender} を用いる。Blender でオブジェクトを作成し、 ポリゴン情報やテクスチャ情報が記述された xml ファイルを出力する。 その xml ファイルを Rendering Engine が受け取って Polygon を生成する。