view cerium-scene_graph.tex @ 13:a91e95964045

*** empty log message ***
author gongo
date Thu, 27 Mar 2008 00:48:54 +0900
parents fea1ac32de27
children 6c558cd2ac8b
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 を生成する。