170 likes | 318 Views
X-shot. akinori quno yuta 親 tomo acco. プレゼンの流れ. モチベーション アプリケーション概要 設計 実装 デモビデオ. モチベーション. 実世界指向インタフェース X-Bar プラットフォームに依存しないゲーム Java , Java3D プログラミングスキルの向上. アプリケーションの概要. 3D シューティングゲーム 位置情報を 3D 空間にマッピング ディスプレイに Java3D で表示. 位置情報センサ. ユーザ. GUI. 使用するハードウェア. PC 1 台 X-Bar
E N D
X-shot akinori quno yuta 親 tomo acco
プレゼンの流れ • モチベーション • アプリケーション概要 • 設計 • 実装 • デモビデオ
モチベーション • 実世界指向インタフェース • X-Bar • プラットフォームに依存しないゲーム • Java , Java3D • プログラミングスキルの向上
アプリケーションの概要 • 3Dシューティングゲーム • 位置情報を3D空間にマッピング • ディスプレイにJava3Dで表示 位置情報センサ ユーザ GUI
使用するハードウェア • PC 1台 • X-Bar • タグ2個
システム構成図 Java3D X-Bar polaris (位置情報 サーバ) Position Information Client 位置情報 (X,Y,Z) 位置情報 (X,Y,Z) 弾丸を 飛ばす 銃の向き情報 大砲の発射 タグ キーボード 銃
実装 • Java3DによるGUI • シーングラフ • 弾と対象物の当たり判定 • Java3Dの衝突判定 • 銃口の向き計算 • 座標系について • IS-600から送られてくる値の誤差
シーングラフ例 仮想空間 移動 自動車 視点 回転 ボディー シャーシ エンジン 前車軸 後車軸 右タイヤ 左タイヤ 右タイヤ 左タイヤ
実際のシーングラフ SimpleUniverse createStage createGameObject athletics setting createPlayer createEnemy createCamera PlayerController CollisionBounds もの 背景・照明 銃の動き 当たり判定 敵を作る ユーザの動き
弾の当たり判定 ■対象物 ・影響範囲 ・消す処理 ・変更許可 Java3Dの衝突判定機能を使用 ■弾 ・影響範囲 ・動き ・変更許可
銃の照準方向を計算 • IS-600 • 2つのタグの位置情報 → 照準のベクトル • 注意した点 • 座標系の違い • 取得した値の誤差
IS-600の座標系とJava3Dの座標系 ディスプレイ方向 北から南を向いている時
これを解決するアルゴ リズムを考えなくては ならなない IS-600から得られる値の誤差 IS600はおかしな 値を送ってくること がある!! IS-600から0.01秒毎に値をとって カーソルのアニメーション
誤差を緩和するアルゴリズム(1) IS-600から0.01秒毎に値を得る 一つ前の値との 差が0.2m以上の場合 はずれ値と判断して 切捨て、変わりに一つ 前の値を代入 yes no この作業を値が10個たまるまで続ける 保存 信頼性の高い 値が0.1秒間 隔で得られる 10個たまった時点で平均を出す。
誤差を緩和するアルゴリズム(2) 2 値が10個たまった時点で平均を出す * 二つの平均の値の間を10等分する ◆信頼性が高い値 ◆比較的滑らかな アニメーション
誤差を緩和するアルゴリズムの限界 平均する値や分割する値を無限にすれば 限りなく信頼性の高い滑らかなアニメーションが実現可能 処理に時間がかかると 描画にディレイがかかる 分割する値を増やすと JAVA3Dでの描画が増える ため重くなる。
実際の動作 • デモのビデオ