Mercurial > hg > Papers > 2008 > gongo-sigos
changeset 2:9216a2b217e6
*** empty log message ***
author | gongo |
---|---|
date | Mon, 24 Mar 2008 03:22:50 +0900 |
parents | b6cb037260ce |
children | 2ef36d40ee96 |
files | cerium-manager.tex cerium-rendering.tex cerium-scene_graph.tex cerium.tex cerium_dev.tex figure/scene_graph.bb figure/scene_graph.graffle figure/scene_graph.pdf introduction.tex sigos.bib sigos.tex |
diffstat | 11 files changed, 107 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cerium-manager.tex Mon Mar 24 03:22:50 2008 +0900 @@ -0,0 +1,6 @@ +\subsection{Task Manager} +%% タスクの管理 (依存関係とか) +%% コードのロード、必要性 (256しかないからとか) +%% TaskManager の API +%% PPE 側と SPE 側、二つとも説明。PPE は上のでいいかな +%% SPE 側はパイプラインとか
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cerium-rendering.tex Mon Mar 24 03:22:50 2008 +0900 @@ -0,0 +1,5 @@ +\subsection{Rendering Engine} +%% SPAN とはなんぞや +%% データ構造 (PolygonPack, SpanPack) とはなんぞや +%% ぐらいを説明すればおkのはず +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cerium-scene_graph.tex Mon Mar 24 03:22:50 2008 +0900 @@ -0,0 +1,40 @@ +\subsection{Scene Graph} +本稿では、ゲーム中の一つの場面 (Scene) を構成するオブジェクトやその振る舞い、 +ゲームのルールの集合を Scene Graph とする。Scene Graph のノードは +親子関係を持つ木構造で構成される (\figref{fig-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 が変更される。これらをどのように変化させるかがゲームのルールとなる。 + +今回は Scene Graph の作成に、オープンソースの 3D モデリングツールである +Blender \cite{blender} を用いる。Blender でオブジェクトを作成し、 +ポリゴン情報やテクスチャ情報が記述された xml ファイルを出力する。
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cerium.tex Mon Mar 24 03:22:50 2008 +0900 @@ -0,0 +1,9 @@ +\section{Cerium} +Cerium は Scene Graph, Rendering Engine, Task Manager から構成される。 +Scene Graph と Rendering Engine が結合して初めて +画面上に描画が可能となり、その二つを Task Manager が +SPE 上で実行させる仕様となっている。 + +\input{cerium-scene_graph} % Scene Graph +\input{cerium-rendering} % Rendering Engine +\input{cerium-manager} % Task Manager
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cerium_dev.tex Mon Mar 24 03:22:50 2008 +0900 @@ -0,0 +1,26 @@ +\section{開発過程} +Cerium を作るために、以下の手順にそれぞれ実装とテストを行う。 + +\begin{enumerate} + \item C によるシーケンシャルな実装 \label{list_dev_1} + \item SPE を考慮したデータ構造 (PolygonPack, SpanPack) を持つ実装 \label{list_dev_2} + \item コードをタスクに分割し、FIFO キューでシーケンシャルに実行する実装 + \item タスクを SPE に割り当て並列実行する実装 +\end{enumerate} + +(\ref{list_dev_1}) の実装は Task Manager を用いず、プログラムのアルゴリズムの +信頼性を確認するために用いる。 +この段階では、入力に対して出力が一意に決まる状況であり、テストは容易である。 +シーケンシャルな実装であるため、デバッグも二分法により容易に行うことが出来る。 + +(\ref{list_dev_2}) における SPE を考慮したデータ構造とは、 +SPE が持つ 256KB という非常に小さなメモリ領域に収まり且つ必要な情報が +効率よく格納されているデータ構造体である。 +今回は PolygonPack, SpanPack というデータ構造を定義した。 + +\begin{itemize} + \item PolygonPack : Scene Graph から得られた、三角形ポリゴンの頂点の座標、 + テクスチャの情報、光源の情報から構成される。 + \item SpanPack : + +\end{itemize}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/figure/scene_graph.bb Mon Mar 24 03:22:50 2008 +0900 @@ -0,0 +1,5 @@ +%%Title: ./scene_graph.pdf +%%Creator: ebb Version 0.5.2 (+ArtBox) +%%BoundingBox: 0 0 542 288 +%%CreationDate: Mon Mar 24 02:27:40 2008 +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/introduction.tex Mon Mar 24 03:22:50 2008 +0900 @@ -0,0 +1,3 @@ +\section{はじめに} +%% シーケンシャルな実装ではマルチコアの力は引き出せないとか +%% Cell の並列ほげほげは簡単じゃないとか(簡単って書いたらアウトだが)
--- a/sigos.bib Mon Mar 24 01:30:34 2008 +0900 +++ b/sigos.bib Mon Mar 24 03:22:50 2008 +0900 @@ -1,4 +1,9 @@ -@manial{cell, -author = "Sony Corporation.", +@manual{cell, +author = "{Sony Corporation.}", title = "Cell broadband engine architecture", -year = 2005} \ No newline at end of file +year = 2005} + +@misc{blender, +author = "{Satoshi Yamasaki.}", +title = "Blender.jp - Blender Japanese Website", +howpublished = "\url{http://blender.jp/}"} \ No newline at end of file
--- a/sigos.tex Mon Mar 24 01:30:34 2008 +0900 +++ b/sigos.tex Mon Mar 24 03:22:50 2008 +0900 @@ -1,5 +1,6 @@ \documentclass[techrep]{ipsjpapers} \usepackage[dvipdfm]{graphicx} +\usepackage{url} % ユーザが定義したマクロなど. \makeatletter @@ -65,15 +66,11 @@ % 本文はここから始まる -\input{cell} -%\input{introduction.tex} -%\input{cbc.tex} -%\input{description_semantics.tex} -%\input{main.tex} -%\input{simulation.tex} -%\input{level.tex} +\input{introduction} % はじめに +\input{cell} % Cell +\input{cerium} % Cerium +\input{cerium_dev} % 開発過程 %\input{conclusion.tex} -%\input{bib.tex} \bibliographystyle{ipsjunsrt} \bibliography{sigos}