import Math; import Color; import Graphics3D; import graphics3d.Graphics3DFramework; // 3D 描画用フレームワーク // モデルの ID 格納変数や時刻変数など int axis, box, sphere, cone; float time=0.0; /* * 初期化を行う関数(プログラムの最初に一度だけ呼び出される) * ここには、3D モデルの生成や配置など、 * プログラムの最初に行いたい準備処理を記述する */ void initialize(int rendererID){ // フレームワークのパラメータ設定 setBackgroundColor(Color.BLACK); //背景色の設定 setWindowSize(800, 600); //ウィンドウ幅,高さの設定 // 座標軸モデルを配置 axis = newAxisModel(3.0, 3.0, 3.0); //生成 mountModel(axis, rendererID); //配置 // 箱モデルを配置 box = newBoxModel(1.0, 1.0, 1.0); //生成 setModelColor(box, 255, 0, 0, 255); //色設定(赤,緑,青,α) mountModel(box, rendererID); //配置 // 球モデルを配置 sphere = newSphereModel(0.5, 0.5, 0.5, 38, 24); //生成 moveModel(sphere, 1.5, 1.5, 0.0); //移動(dX,dY,dZ) setModelColor(sphere, 0, 0, 255, 255); //色設定(赤,緑,青,α) mountModel(sphere, rendererID); //配置 // 円錐モデルを配置 cone = newConeModel(0.5, 0.5, 1.0, 38, 2); //生成 moveModel(cone, 0.0, 0.0, 1.0); //移動(dX,dY,dZ) setModelColor(cone, 0, 255, 0, 255); //色設置(赤,緑,青,α) mountModel(cone, rendererID); //配置 } /* * 更新処理を行う関数(繰り返し呼び出される) * ここには、3D モデルの移動など、 * 毎ループ行いたい任意の処理を記述する */ void update(int rendererID){ rotXModel(box, 0.08); //箱モデルを X 軸まわり回転 rotZModel(sphere, 0.01); //球モデルを Z 軸まわり回転 //円錐モデルを適当に移動(dX,dY,dZ) moveModel(cone, 0.1*sin(time), 0.1*sin(3.0*time), 0.0); time += 0.1; // 時刻を少し進める }