B02.ノード
ノードを使用して立方体や球を表示します。

グローバル変数用意
わかりやすいようにグローバル変数で用意しておきます。
f32 rx = 0;
f32 ry = 0;
ISceneNode* node[3];
|
図形描画
立方体/直方体/球のマテリアルなどを設定します。
ポリゴンで作成したときと同じ手順です。
void makeScene(IVideoDriver *driver)
{
//立方体
node[0]->setMaterialTexture(0, driver->getTexture("wall.bmp"));
node[0]->setMaterialFlag(EMF_LIGHTING, false);
node[0]->setMaterialFlag(EMF_ZBUFFER, false);
node[0]->setMaterialFlag(EMF_BACK_FACE_CULLING, false);
node[0]->setMaterialType(EMT_TRANSPARENT_ADD_COLOR);
node[0]->setPosition(vector3df(-2,0,0));
node[0]->setRotation(vector3df(rx,ry,0));
//直方体
node[1]->setMaterialTexture(0, driver->getTexture("wall.bmp"));
node[1]->setMaterialFlag(EMF_LIGHTING, false);
node[1]->setMaterialFlag(EMF_BACK_FACE_CULLING, false);
node[1]->setPosition(vector3df(1,0,0));
node[1]->setRotation(vector3df(0,ry,0));
//球
node[2]->setMaterialTexture(0, driver->getTexture("wall.bmp"));
node[2]->setMaterialFlag(EMF_LIGHTING, false);
node[2]->setPosition(vector3df(3,0,0));
node[2]->setRotation(vector3df(rx,0,0));
rx += 0.02f;
ry += 0.01f;
}
|
ノード作成
add〜を使用してノードを作成します。
作成する際に大きさや表示場所などを指定できます。
//ノードの作成
node[0] = smgr->addCubeSceneNode(2.0f); //立方体
node[1] = smgr->addCubeSceneNode(1.0f,0,-1,vector3df(0,0,0),
vector3df(0,0,0),vector3df(1.0f,2.0f,1.0f)); //直方体
node[2] = smgr->addSphereSceneNode(1.0f); //球
|

addCubeSceneNode
直方体ノードを追加します
ISceneNode* addCubeSceneNode(
f32 size = 10.0f,
ISceneNode* parent = 0,
s32 id = -1,
const vector3df& position = vector3df(0, 0, 0),
const vector3df& rotation = vector3df(0, 0, 0),
const vector3df& scale = vector3df(1.0f, 1.0f, 1.0f)
)
|
size 大きさを指定します。
parent 親を指定します。親が動けば一緒に動きます。
id IDを指定します。
position 表示位置を指定します。
rotation 回転を指定します。
scale 拡大縮小率を指定します。全て等しい場合は立方体になります。
初期サイズは10と割と大きいので注意してください。
|

addSphereSceneNode
球ノードを追加します
ISceneNode* addSphereSceneNode(
f32 radius = 5.0f,
s32 polyCount = 16,
ISceneNode* parent = 0,
s32 id = -1,
const vector3df& position = vector3df(0, 0, 0),
const vector3df& rotation = vector3df(0, 0, 0),
const vector3df& scale = vector3df(1.0f, 1.0f, 1.0f)
)
|
radius 半径を指定します。
polyCount 分割数を指定します。
parent 親を指定します。親が動けば一緒に動きます。
id IDを指定します。
position 表示位置を指定します。
rotation 回転を指定します。
scale 拡大縮小率を指定します。
|

ノード
立方体も球も、モデルもノードとして扱われます。
これの利点としては、全て同じ方法で操作できることです。
移動も回転も、操作方法がわかればどれにでも適用できます。
また、IDを割り当てることで、IDから位置も取得できるので、
レーダーを作成して、そこに表示することも可能です。
もし、ポリゴンだけで作成していた場合は、ポリゴン1つずつを移動させたり
どこを基準にして、どれに対してIDを振り当てるか…などと考えてしまうでしょう。
ノードで何ができるかは、ISceneNodeを参照してください。
|
ダウンロード
今回作成したファイル一式です。
宿題
1.大きな板ノードを作成して、そこに球を配置してみましょう。
|
|