VR開発環境の開発 長谷川晶一.

Slides:



Advertisements
Similar presentations
UGUI を 使ってみよう ( 導入・紹介?編 ) 1. uGUI とは O Unity 4.6 から使えるようになった UI (ユー ザーインターフェース)システム O 8 月: Unity4.6 β uGUI 試用版公開 O 11 月: Unity4.6 uGUI 正式版公開 正式版公開で、 機能紹介ブロ.
Advertisements

Microsoft PowerPoint IT講習会 /9 (Mon) テックサポーター 佐藤 諒.
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
シーケンス図の生成のための実行履歴圧縮手法
研究内容の紹介 電磁場の計算機シミュレーション 卒業研究 研究室の紹介
Microsoft PowerPoint IT講習会 /15 (Mon) テックサポーター  川田 拓.
Android と iPhone (仮題) 情報社会とコンピュータ 第13回
Lync 会議 Lync 会議に参加する Lync 2013 クイック リファレンス Lync 会議のスケジュール
Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平.
プログラミング基礎I(再) 山元進.
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
エージェントモデル シミュレーション.
剛体の物理シミュレーション は難しい? 佐藤研助手 長谷川晶一.
Accessによるデータベース(3) Ver /11.
Javaのインタフェース についての補足 2006年5月17日 海谷 治彦.
Microsoft Office 2010 クイックガイド ~ファイルの互換性編~
プログラミング演習3 第4回 ミニプロジェクト.
ParaViewを用いたPHITS 計算結果の3次元表示
EGSに対応した粒子軌跡と 計算体系の3次元表示ソフト - CGVIEW -
WWW上の3次元空間表現 A three-dimesional space expression on WWW
ITPASSセミナー ~Zindaiji~
2007/1/18 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
共同ローカリゼーション フレームワーク 井上 謙次.
エンタテインメントのための 力覚提示 東京工業大学 精密工学研究所 長谷川晶一.
Microsoft Office 2010 クイックガイド ~応用編~
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
高山建志 五十嵐健夫 テクスチャ合成の新たな応用と展開 k 情報処理 vol.53 No.6 June 2012 pp
パスファインダーの作成 slis. tsukuba. ac. jp/~fuyuki/cje2/CJE161018
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
プログラミング演習3 第2回 GUIの復習.
第13回 ハッシュテーブルを使ったプログラム ~高速に検索するには?~.
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
Windows 2000 拡張カーネルの技術紹介 2018年6月10日 黒翼猫.
9.1 DOMの概要 9.2 DOMプログラミングの基礎 9.3 DOMのプログラミング例
Microsoft PowerPoint IT講習会 /5 (Wed) テックサポーター  佐藤 諒.
3D散歩ゲーム 08A2043 谷口盛海 種田研究室.
暗黙的に型付けされる構造体の Java言語への導入
第6回 2007年6月1日 応用Java (Java/XML).
プログラミング 4 記憶の割り付け.
プログラミング演習3 第2回 GUIの復習.
ゲームプログラミング講習  第3章 ゲーム作成 ブロック崩しを作ります ゲームプログラミング講習 第3章 ゲーム作成.
端末およびサービス透過的な 情報閲覧支援システムの構築
材質感提示のための振動を用いた力覚インタラクション環境の提案
一方向画像からの 3Dモデル生成 電気電子工学科 白井研究室 T215049 田原 大輝.
プロジェクト演習Ⅱ インタラクティブゲーム制作
Firebaseを用いた 位置情報共有システム
1-3 UMLの図(ダイアグラム) コンポーネント図 システムの物理的な構成を表現 ソフトウェアコンポーネントの依存性を表現
Java における 先進的リフレクション技術
岩澤全規 理化学研究所 計算科学研究機構 粒子系シミュレータ研究チーム 2015年7月22日 AICS/FOCUS共催 FDPS講習会
抗力への振動付加による 高剛性とすべり感提示
電場計算 2014/9/25 京大理 髙田淳史.
統計ソフトウエアRの基礎.
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
埼玉工業大学 知的感性システム工学研究室 Web3Dによる可視化 Web教材 矩形型マゲネトロン スパッタリングシステム
設計情報の再利用を目的とした UML図の自動推薦ツール
物理法則に基づいた 力覚VR環境構築ソフトウェアの開発
サブゼミ第7回 実装編① オブジェクト型とキャスト.
物理的側面を表現する図 石原研 古賀浩之.
プログラム分散化のための アスペクト指向言語
Microsoft Office 2010 クイックガイド ~ファイルの互換性編~
JAVA入門⑥ クラスとインスタンス.
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
力覚インタラクションのための 物理ベースモデリング
Molecular Devices Japan
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
3.1 シューティングゲームの当たり判定 当たったら死亡.
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
クリエイティブ リサーチ 2019/05/20 日本工学院八王子専門学校 M.Katsube.
第0.5回: ~Unity Editorの操作方法~
プログラミング 2 静的変数.
Presentation transcript:

VR開発環境の開発 長谷川晶一

ヒューマンインタフェースの研究 目的:良いインタフェースを作る 新しいインタフェースの開発 面白い使い方の発明 人のことを調べる 人に与える影響を調べる... VRは設計指針の一つ VR:現実の一部を再現する→現実のように感じる 現実世界で普段使っている技能を利用できる 世の中で,ヒューマンインタフェースの研究がされている.佐藤・小池研もヒューマンインタフェース研究分野となっている.

どこまでがヒューマンインタフェース? 使用状況と切り離せない たとえばマウスだけでは何もできない GUIとあわせて役立つ 視点を示すポインター カメラのミニチュア? CSL 暦本 Augmented surface

どこまでがヒューマンインタフェース? アプリケーションと切り離せない インタフェースデバイスだけでは不十分 3Dの自由形状の設計 → 力覚提示装置? ゲーム → コントローラ Office → マウス+キーボード IE → マウス インタフェースデバイスだけでは不十分 使い方を示さないと,なんだか分からない

VRインタフェース VRという現象を利用したインタフェース VRインタフェースの研究では ことが必要. これを簡単にしたい. VR環境を作る 新しいデバイスを組み込む アプリケーションを作る 使ってみる   ことが必要. これを簡単にしたい. 佐藤研では,VRを利用したインタフェースシステムを作っています.

VRの研究 目的:良いVRを作る 良いって?...場面・用途ごとに異なる 究極のVR環境を作るのは難しい. 場面・用途ごとにVR環境を作る. 飛行訓練 → フライトシミュレータ 恐怖症の治療 → 飛行機の客席シミュレータ 医療支援 → 内視鏡 究極のVR環境を作るのは難しい. 場面・用途ごとにVR環境を作る. VR環境はその都度開発 これを簡単にしたい

目的 計算機内に仮想空間を構築 このような環境に, これを支援する開発環境の開発 視覚:3D映像で仮想空間を表示 力覚:仮想空間内の物体に触った反力を提示 インタラクティブ:仮想世界の操作が可能 このような環境に, 新しいデバイスを組み込む. 特定の用途に使うためのシステムを作る. これを支援する開発環境の開発

VR環境とユーザ 計算機 仮想世界 データ システム 3次元形状 材質 ダイナミクスモデル レンダリング 力覚インタフェース サーフェースモデル ソリッドモデル 材質 色・硬さ ダイナミクスモデル 質量・慣性・拘束 システム レンダリング 力覚インタフェース 物理シミュレーション

データとシステム 凡例 一つの物体を表すデータ メッシュデータ 色・反射率 データ 位置 姿勢 Bbox 質量・慣性・弾性 凸形状 レンダリングエンジン 映像提示 物理エンジン 衝突判定 力覚レンダリング 力覚提示装置 Bbox 凸形状 質量・慣性・弾性 音響提示 一つの物体を表すデータ システム毎に欲しいデータの形式が異なる

データとシステム デバイスや提示モードが増えるたびにシステムは増える 仮想世界を動かすためにもシステムは増える(物理・AI) これらに簡単に対応できなければならない. 簡単とは? 増えた分だけ足せば,既存のシステムとともに動く. 既存のシステムを作り直す必要がない. ...システムは独立だが,データは共通部分がある.

データの保持法 仮想物体 共通 位置・姿勢 レンダリング メッシュ・色・反射率 衝突判定 BBox・凸分割 共通 位置・姿勢 レンダリング メッシュ・色・反射率 衝突判定 BBox・凸分割 ダイナミクス 質量・慣性・弾性・粘性

データの保持法 1つの解 物体に名前とデータの対応表を用意 簡単(システムが増えてもObjectは変わらない) かなり遅い Object{ map<string, void*> properties; }; システムは名前に対応するデータを取り出して作業 簡単(システムが増えてもObjectは変わらない) かなり遅い

データの保持法 速度を重視した解 クラスのメンバにする 大変(システムが変わるたびにObjectが書き換わる) 高速 Object{ Mesh mesh; float mass; Affine posture; }; 大変(システムが変わるたびにObjectが書き換わる) 高速

データの保持法 折衷案 Object を 共通データを持つFrame と システム毎のデータに分ける Visual{ virtual Render(); }; Frame{ Affine posture; // 位置・姿勢 // レンダラが使用するデータ vector<visual*> visuals; // 衝突判定が使用するデータ vector<geom*> geoms; }; Geom{ virtual Collision(Geom*); }; Mesh{ Render(); Vec3 vertices; Material mat; }; Light{ Render(); Vec3 direction; Vec3 color; }; BBox Convex 折衷案 Object を 共通データを持つFrame と システム毎のデータに分ける システムの変更はFrameには影響しない. システムが増えたときだけ,Frameを書き換える. 高速

データの保持法のまとめ 汎用にしすぎると,速度が遅くなる. 専用にしすぎると,変更に弱くなる. リアルタイムに実行することを考えて,バランスを取る必要がある.

VR環境の構築 計算機 GUI プログラミング 追加 Load Save 確認 調整 ツール 3DStudio Max PhotoShop Visual C++ 追加 Load 仮想世界 データ システム 保存された 仮想世界 Save 確認 調整

データの保存と読み出し 仮想世界のデータ(Frame/Visual/Geometry)をファイルに保存,ファイルから読み出し システムの増減→データの増減 システムが変わっても,同じファイルを使いたい. 力覚提示装置があっても無くても,同じ仮想世界を使いたい. システムが無い場合にもデータは保持したい. 物理シミュレータなしのシステムで編集すると,質量と慣性のパラメータが消えてしまうのでは困る. これはWebやWordやExcelでも問題になっていること... XMLはこれを解決しようとしている

XMLの解決法 全部のデータを読み出し,保存する. 分かるデータだけを解釈・表示・編集する. たとえば <Anchor … >を無視しても他は表示・編集できる. <X3D> <Scene>   <Viewpoint position="0.0 0.0 0.0" orientation="0.0 0.0 1.0 0.0" > <Transform DEF="Box01" translation="0.0 -0.9303 0.0" > <Shape> <Appearance>  <Material shininess=“0.2” diffuseColor=“0.5255 0.2314 0.03137” /> </Appearance>   <Box size=“20.0 1.0 20.0” /> </Shape> </Transform> </Scene> <Anchor url=“”http://www.xsmiles.org/demo/demos.xml“” description=“Testing”> </X3D>

XMLファイルのロードとセーブ シーングラフに入らないノードも消失しない ファイル 変換 ドキュメントオブジェクト シーングラフ X3D <X3D> <Scene>   <Viewpoint … > <Transform … > <Shape> <Appearance>   <Material …> </Appearance>   <Box … /> </Shape> </Transform> </Scene> <Anchor …> </X3D> ドキュメントオブジェクト X3D Viewpoint Transform Shape Appearance Box Anchor Material シーングラフ Scene 変換 Camera Frame Mesh Material シーングラフに入らないノードも消失しない

ドキュメントの取り扱い 同じインタフェース いろいろなパーサ いろいろなファイル 同じ変換プログラムでOK DirectX Xファイルパーサ シーングラフ Scene 同じ変換プログラムでOK Camera Frame Mesh 同じインタフェース いろいろなパーサ DirectX Xファイルパーサ Wrl2View XMLパーサ : いろいろなファイル DirectX XFile VRML97 X3D : いろいろな ドキュメントオブジェクト XFileObject TNode DOM

ドキュメントオブジェクトのインタフェース ツリー構造を作るための親と子 ノードの名前 ノードの型名 名前とデータの対応表 FIDocNode parent FIDocNode{ virtual string GetType()=0; ///< 型名の取得 virtual string GetName()=0; ///< 名前の取得 virtual void SetName(string s)=0; ///< 名前の設定 /// データの設定.名前とデータとサイズを渡す. virtual void SetDataImp(string id, void* data, size_t sz)=0; /// データの取得.名前を渡すと,データが取れる. virtual void GetDataImp(string id, void*, int sz)=0; }; children FIDocNode FIDocNode

シーングラフへの変換(Load) 巡回ルーチンがドキュメントノードの型に合う変換器を呼び出し, 変換器がノードを読んでシーングラフを作る ドキュメントオブジェクト 変換器 シーングラフ 巡回ルーチン Scene X3D Viewpointの変換 Camera Frame Viewpoint Transform Anchor Transformの変換 Mesh Shape Shapeの変換 Appearance Box Materialの変換 Material 巡回ルーチンがドキュメントノードの型に合う変換器を呼び出し, 変換器がノードを読んでシーングラフを作る

ドキュメントへの変換(Save) 巡回ルーチンがドキュメントノードの型に合う変換器を呼び出し, 変換器がノードを読んでシーングラフを作る ドキュメントオブジェクト 変換器 シーングラフ 巡回ルーチン X3D Scene Cameraの変換 Viewpoint Transform Anchor Camera Frame Frameの変換 Shape Mesh Meshの変換 Material Materialの変換 巡回ルーチンがドキュメントノードの型に合う変換器を呼び出し, 変換器がノードを読んでシーングラフを作る

シーングラフ・ドキュメントの実装 ドキュメント(FileIO) シーングラフ(SceneGraph) 変換器(FileIO) n 1 children SGObject ClassName GetName FIFileDoc -Load() -Save() n FIDocNode D3DocNode SGVisual 1 SGFrame SGScene -names SGGeom. 変換器(FileIO) D3Mesh FILoadScene FIBaseLoader CDConvex CDMesh D3Light CDPolyhedron FIFrameLoader D3MeshLoader

ファイル入出力のまとめ ドキュメントオブジェクトを使うことで, 新しいデータへの対応が簡単 システムが理解できないデータを壊さずに,データを編集できる. 新しいデータへの対応が簡単 新しいシステムを加えた際など,データの型が増えたときの対応 新しいデータ型のクラスを作る. 新しいデータ型のドキュメントを決める. ドキュメントをシーングラフに変換するクラスを作る. シーングラフをドキュメントに変換するクラスを作る.

終わりに VR環境開発環境を開発している 今後の方針 システムの増減に簡単に対応できる さまざまなファイル形式に簡単に対応できる(ようになるはず) 今後の方針 今佐藤研のM2・M1の人が使っている環境(Wrl2View)を修論が書き終わるころに置き換えたい. それまでに足りない機能(衝突判定・物理シミュレーション)を増やしたい. GUIとC++によるコーディングの良いとこ取りをした開発環境にしたい. 田上君の研究