Document

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