\begin{chapterabstract}
Creatureモジュールは，物理シミュレータを用いてバーチャルクリーチャ（自律動作するキャラクタ）を作成する機能を提供します．

Springheadの物理シミュレーション機能は，人間・動物・キャラクタ・ロボット等の身体動作をシミュレーションすることにおいても利用価値があります．
剛体・関節系で身体モデルを作成し，関節に組み込まれた制御機能や関節系のIK機能を用いて身体動作を生成することができます．
物理シミュレータ内の情報（物体の運動・形状・接触力等）を利用してバーチャルな感覚（センサ）情報の生成もできます．感覚・制御のループを回すことで自律動作するキャラクタやロボットが実現できます．

こうしたバーチャルなキャラクタ・ロボット等を総称して，バーチャルクリーチャ（Creature : 生き物）と呼びます．
\end{chapterabstract}

% ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
%
% ＜ドキュメントの書き方＞

% 機能 ::= "概説" 例 詳細 リファレンス*
% 例   ::= ["コード例" "コード例の説明"]*
% 詳細 ::= [機能]*

% リファレンス ::= [ディスクリプタ | インタフェース]

% - 原則としてリファレンスは機能のまとめと補遺にとどめる．
% - Getter/Setterは対応するディスクリプタのリファレンスに書き，インタフェースのリファレンスには載せない．
% - 図は "概説" "コード例" "コード例の説明" で適宜用いる．ただし "コード例" の図は原則としてそのコードの実行結果とする．

%
% ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----


% ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
%
% 概説
% 

\section{Creatureモジュールの構成}

下図にCreatureモジュールの構成を示します．

\begin{sourcecode}
CRCreature
+-- CRBody
|+-- CRBodyPart (CRObject)
+-- CREngine
 +-- CRController
\end{sourcecode}

\texttt{CRCreature}は，バーチャルクリーチャ$1$体分の機能を統括するオブジェクトです．身体と制御エンジンを有しています．

\texttt{CRBody}は，バーチャルクリーチャの身体モデルを統括します．身体モデルは身体構成部品の集合体です．
\texttt{CRBodyPart}は，身体構成部品ひとつひとつに対応するオブジェクトです．剛体あるいは関節の2種類があり，さらにIKでの動作に対応するかどうかによって計$4$種類に細分されます．

\texttt{CREngine}は，バーチャルクリーチャのステップ処理の実行主体です．\texttt{CRCreature}の\texttt{Step}関数が1回呼ばれるたびに，\texttt{CRCreature}が保持する全ての\texttt{CREngine}の\texttt{Step}関数が順に実行されます．
\texttt{CRController}は\texttt{CREngine}の一種で，バーチャルクリーチャの身体制御を担当します．実際の制御機能は\texttt{CRController}を継承した各クラスが担当します．眼球運動制御，首運動制御等があります．

% やっぱりセンサはBodyPartではなくエンジンなのでは．
% あとエンジンはBodyPartに保持させるべきなのか？Affordance？

