2021/02/19 第4回ビジュアリゼーションワークショップ

Unity用可視化フレームワークVisAssetを用いた可視化アプリケーション開発〇 川原慎太郎（海洋研究開発機構）
宮地英生（東京都市大学）

目次••••••••••••••

本日御用意頂くもの
VisAssetsの概要
VisAssetsのダウンロード
新規プロジェクトの作成
Unityエディタの画面構成
VisAssetsのインポート実行に必要なアセットの追加
可視化モジュールの場所
データを読み込む
ここまでの状態の確認
カラースライスを表示する
任意の要素のカラースライスを表示する
複数のカラースライスを表示する
等値面を表示する

••
•
•
•
•
•
•
•
•

ユーザインタフェースの追加
ビルド前の準備
Windows用実行ファイル作成[参考] PC-HMDでの立体視表示[参考] Android用ビルド[参考] Cardboard対応ビルド
ベクトル場の可視化
新たなモジュールの開発
まとめ
謝辞• [付録] VFIVE用データの読み込み• [付録] GrADS用データの読み込み

本日御用意頂くもの※本資料はWSのページからダウンロードできます• UnityをインストールしたWindowsPC (Windows7 SP1+以上，64bit)※ Macでも動くかとは思いますが、十分な動作確認をしていません• Unityのバージョンは2019.4 LTS を使用します※ Unity Hubからのインストールをおすすめします• ハンズオン後半で使用するサンプルデータ（下記URLから取得してください）https://www.jamstec.go.jp/ceist/aeird/avcrg/vfive.ja.html
ダウンロードの項にあるサンプルデータABC Flowのビッグエンディアン版(sample_big2.tar.gz)を使用します• Android 用ビルドをする場合 (時間が足りない場合は紹介のみとなります)
Android用ビルド環境 (Unityのインストール時に選択可)Android機 (スマートフォン、タブレット等)
上記とPCを接続するデータ通信可能なUSBケーブル (充電専用のものはNG)

VisAssetsの概要(1)• Unity用可視化フレームワーク• 宮地英生教授(東京都市大学)と川原との共同開発• AVS/Expressのような可視化ネットワークの構築をUnity上でも簡単に、をコンセプトに開発中

AVS/Expressのビジュアルエディタ

Unityのシーンヒエラルキー上でのVisAssetsによる可視化ネットワーク構築

VisAssetsの概要(2)• 可視化フローを構成する小要素を機能毎にモジュールアイコン化• Unityのシーンツリーへのモジュールアイコンのドラックアンドドロップによるプログラミングレスでの可視化アプリケーション開発を実現

必要なモジュールをD&D

Modularized visualization elements

Visualization network on Unity

VisAssetsの概要(3)• サンプルモジュールによるスカラー場、ベクトル場の可視化例

VisAssetsの概要(4)• ビルド後のアプリケーションでのパラメータ変更用GUIを提供
実行画面

選択された可視化モジュール用UIへの切り替え

スカラー場抽出モジュール

断面分布図モジュール

等値面モジュールVisAssetsの概要(5)• マルチプラットフォーム対応であるUnityを基盤とすることにより、PC、スマートフォン等多くのデバイスで実行可能なアプリケーションの開発ができます

HMDへの表示

Androidスマートフォンでの実行

VisAssetsのダウンロード(1)• https://github.com/kawaharas/VisAssets にアクセスしますVisAssetsのダウンロード(2)• 下にスクロールし、Releasesの 「1 tags」 の部分をクリックしますVisAssetsのダウンロード(3)• 「Assets」をクリックして展開し、unitypackage をダウンロードします① 「Assets」を押して展開➁ *.unitypackage をダウンロード

新規プロジェクトの作成(1)• Unity Hubを起動し、新規作成ボタンを押します(複数のバージョンのUnityをインストールしている場合は、新規作成ボタン右端の下矢印ボタンを押して2019.4.XXを選択します)新規プロジェクトの作成(2)• テンプレートで「3D」を選択、プロジェクト名と保存先を設定し「作成」を押します(ここではプロジェクト名をデフォルトの「New Unity Project」から「VisualizationWorkshop」に変更しています）

Unityエディタの起動• 作成した新規プロジェクトでUnityエディタが起動しますUnityエディタの画面構成(1)

タブで切り替えヒエラルキーウィンドウ

シーンビュー / ゲームビュー
インスペクタウィンドウ

タブで切り替えプロジェクトウィンドウ / コンソールウィンドウ

Unityエディタの画面構成(2)• 例えば、ヒエラルキーウィンドウで「Main Camera」を選択すると、インスペクタウィンドウに「Main Camera」を構成するコンポーネントとそのパラメータが表示されます※前のスライドの画面から、ゲームビュー⇒シーンビュー、コンソールウィンドウ⇒プロジェクトウィンドウへと表示を切り替えていますVisAssetsのインポート(1)• メニューの[Assets]、またはプロジェクトウィンドウ内のAssetsフォルダの右クリック
メニューから、[Import Package]-[Custom Package]を選択します

メニューからのインポート

プロジェクトウィンドウからのインポート

VisAssetsのインポート(2)• ダウンロードしたVisAssetsのUnityPackageを選択し、「開く」ボタンを押しますVisAssetsのインポート(3)• 開いた「Import Unity Package」ウィンドウの「Import」ボタンを押しますVisAssetsのインポート(4)• パッケージインポート前後のプロジェクトウィンドウの表示の変化

実行に必要なアセットの追加(1)• 読み込み対象となるファイルを選択する際のファイルダイアログについて、VisAssets
ではアセットストアで無償公開されている「Runtime File Browser」を使っています• このような便利なアセットを利用できるのもUnityの特徴です(有償のものもあります)

この部分

実行に必要なアセットの追加(2)• アセットストアの検索窓で「Runtime File Browser」を検索します※ タブに「Asset Store」が無い場合はメニューの[Window]ー[Asset Store]を選択① タブでアセットストアに切り替え➁ 検索窓で 「Runtime File Browser」 を検索※ 大文字小文字に注意➂ Runtime File Browser を選択

実行に必要なアセットの追加(3)• 「Runtime File Browser」をプロジェクトにインポートしますDownloadボタンを押してダウンロードした後、Importボタンを押してプロジェクトにインポート実行に必要なアセットの追加(4)• 「Import Unity Package」ウィンドウの「Import」ボタンを押す

実行に必要なアセットの追加(補足)• 「Runtime File Browser」 がアセットストアからうまく取得できない場合はgithubからダウンロードしたUnityPackageを使っても構いません
https://github.com/yasirkula/UnitySimpleFileBrowser

可視化モジュールの場所• 可視化モジュールは VisAssets/Prefabs 以下にインポートされますデータを読み込む(1)• VisAssetsでは I×J×K(×時刻)の構造格子データを扱うことができます• サンプルモジュールとして、3つのデータ読み込み用モジュールを用意しており、ここではテキストファイルからデータを読み込む「ReadField」モジュールを使ってみます

モジュール名ReadField
ReadV5

ReadGrADS

テキストファイル

読み込み可能なデータ

CAVE型VR装置用可視化ソフトウエア「VFIVE」用データ（テキスト＋バイナリ）
大気海洋データ用可視化ソフトウエア「GrADS」用データ（テキスト＋バイナリ）

データを読み込む(2)• ReadFieldモジュールで読み込み可能なテキストデータの例
11, 11, 8

格子数 (I × J × K)

-5, -5, -3.5, 7.889866919, -5, -5-4, -5, -3.5, 7.297259760, -4, -5-3, -5, -3.5, 6.800735254, -3, -5-2, -5, -3.5, 6.422616289, -2, -5-1, -5, -3.5, 6.184658438, -1, -5
0, -5, -3.5, 6.103277808, 0, -5
1, -5, -3.5, 6.184658438, 1, -5
2, -5, -3.5, 6.422616289, 2, -5
3, -5, -3.5, 6.800735254, 3, -5
4, -5, -3.5, 7.297259760, 4, -5
5, -5, -3.5, 7.889866919, 5, -5～(後略)～

格子点座標格子点上の値(3成分)

データを読み込む(3)• アセットストアの表示のままであればシーンビューに戻しておきます• プロジェクトウィンドウから「ReadField」モジュールを、ヒエラルキーウィンドウの「Main Camera」、「Directional Light」と同じ階層にドラッグアンドドロップします

ドラッグアンドドロップで配置データを読み込む(4)• ヒエラルキーウィンドウで「ReadField」モジュールを選択し、インスペクタウィンドウのTransformのPositionが原点(X=0, Y=0, Z=0)でない場合はリセットしておきます

左クリックで表示される
メニューから「Reset」を選択

データを読み込む(5)• 「ReadField」モジュールでのデータ読み込み方法には以下の三種類があります
1. モジュール内蔵のテスト用データを使う
2. インスペクタで指定されたデータファイルを読み込む
3. ビルド後のアプリケーション実行中に、ファイルダイアログ※からデータファイルを指定して読み込む• 本チュートリアルでは 1. のモジュール内蔵のテスト用データを使う方法、または 2. の指定したデータファイルをビルド後のアプリケーションに組み込む方法を紹介します※アセットストアからインポートしたUnitySimpleFileBrowserはここで使っていますデータを読み込む(6)• 「ReadField」モジュールのインスペクタ表示と設定項目は下記の通りです
読み込み対象とするファイル名を入力指定したファイルを起動直後に読み込む場合はチェック指定したファイルをビルド後のアプリケーションの組み込みデータとして内蔵する場合はチェックモジュール内蔵のダミーデータを使って動作確認する場合はチェックデータを読み込む(7)• ヒエラルキーウィンドウで「ReadField」を選択し、インスペクタウィンドウ内の「Read Field (Script)」のオプションを下記のいずれかに設定します「Sample3D3.txt」は大文字小文字に注意

モジュール内蔵のテスト用データを使用する場合
11×11×11、要素数2

データファイルをアプリケーションに組み込む場合
11×11×8、要素数3(Assets/StreamingAssetsフォルダに配置済み)

データを読み込む(8)• データが正しく読み込まれたかどうかの確認のため、データ境界線を表示するBoundsモジュールを使ってみます• プロジェクトウィンドウから「Bounds」モジュールをヒエラルキーウィンドウの「ReadField」モジュールの子となるようドラッグアンドドロップしますここまでの状態の確認(1)• ツールバーの再生ボタンを押すとゲームビューに実行結果が表示されます(この段階ではデータ領域を示す線のみが表示されます)
左端が再生ボタンここまでの状態の確認(2)• ゲームビューに切り替え、左ドラッグすることで回転、ホイールの前後で拡大縮小表示ができます

ゲームビューここまでの状態の確認(3)• インスペクタの DataField の項で読み込まれたデータが確認できます• Element IDのスライダーを左右に動かすと各要素の詳細が表示されますここまでの状態の確認(4)• 再生ボタンをもう一度押すとゲームビューでの実行が終了します(実行中の回転・拡大縮小の操作は保存されず実行前の状態に戻ります)
左端が再生ボタン

接続を間違えた場合• 下図ではBoundsがReadFieldの下に接続されていないため無効な接続となります• 実行時に無効なモジュールは非アクティブな状態となり、アプリケーションの動作にも影響を与えません

実行前

実行中
(Boundsが非アクティブな状態に)シーンの保存• 再生を止めた状態で、メニューの「File」-「Save」で現在のシーンを保存します(ヒエラルキーウィンドウでCtrl-Sでも可)• 以下、進捗確認後に適宜シーンを保存することをおすすめしますカラースライスを表示する(1)• プロジェクトウィンドウから、「Slicer」モジュールをヒエラルキーウィンドウの「ReadField」モジュールの子となるようドラッグアンドドロップして接続しますカラースライスを表示する(2)• ツールバーの再生ボタンを押すとゲームビューにBoundsによるデータ領域に加えてカラースライスが表示されますカラースライスを表示する(3)• 実行中にヒエラルキーウィンドウで「Slicer」を選択し、インスペクタウィンドウ内のオプションを変更することで、軸、スライスレベル(0～1の範囲)等を設定できます
Filter Mode = TRILINEAR

Filter Mode = POINT

Axis = 0, Slice = 0.3

Axis = 1, Slice = 0.3

Axis = 2, Slice = 0.3

カラースライスを表示する(4)• 次の作業に移る前に、再生ボタンを押してゲームビューでの実行を終了します任意の要素のカラースライスを表示する(1)• ReadFieldの直下に接続したSlicerへの入力データは、入力データに含まれる要素の内、最初の要素となります• 他の要素をSlicerへの入力としたい場合には「Extract Scalar」モジュールを挿入し、任意の要素を選択できるようにする必要があります

Extract ScalarがReadFieldの子となるよう配置し、配置済みのSlicerはExtract Scalarの子となるようドラッグして移動する任意の要素のカラースライスを表示する(2)• 実行すると「Extract Scalar」のインスペクタを使って、入力データからSlicerに渡す要素(Channel)を一つ選択可能となります複数のカラースライスを表示する(1)• 実行を停止し、「Extract Scalar」の子として「Slicer」を二つ追加します(同一階層の同名モジュールにはUnityエディタが識別子を自動で付与します)複数のカラースライスを表示する(1)• 再生ボタンで実行し、各「Slicer」モジュールの設定をインスペクタからSlicer:Axis=0、 Slicer (1):Axis=1、 Slicer (2):Axis=2、いずれもSlice=0.5とすると下図のような結果が得られます(下図では視点を変えてあります)等値面を表示する(1)• 実行を停止し、「Extract Scalar」の子として「Isosurface」を追加します• 「Slicer」とは別の要素の等値面を表示したい場合は、「ReadField」の下に「Extract Scalar」を追加し、その下に「Isosurface」を接続します等値面を表示する(2)• 「Isosurface」モジュールのインスペクタから閾値(Threshold)を変更することで等値面が生成されます(Shading Modeが選択できますが、諸事情によりFLATのままとしてください)ユーザインタフェースの追加(1)• 実行を停止し、「UIManager」モジュールをヒエラルキーウィンドウに「Main Camera」と同じ階層にドラッグアンドドロップして追加することにより、ゲームビューの右端にUIが追加されます

UIManagerにより追加されたユーザインタフェース

ユーザインタフェースの追加(2)• 再生ボタンで実行すると、ゲームビュー内のUIでの操作対象となるモジュール選択と、選択中のモジュールのパラメータ変更ができるようになります(インスペクタからのパラメータ変更はUnityエディタでの実行中のみ可能で、ビルド後にはできません)ビルド前の準備(1) ～組み込みシェーダーの登録～• メニューから[Edit]-[Project Settings]でProject Settingsウィンドウを表示し、そこで「Graphics」を選択しますビルド前の準備(2) ～組み込みシェーダーの登録～• 「Graphics」内の[Built-in Shader Settings]-[Always Included Shaders]のSizeを現在の値から2つ増やします(下図では9から11に変更しリターンキーで確定)ビルド前の準備(3) ～組み込みシェーダーの登録～• シェーダーリストの末尾に追加された「Element 9」と「Element 10」にSimplePhongとSliceShaderを設定します(順不同)

ここを押して開いたウィンドウからシェーダーを選択ビルド前の準備(4) ～組み込みシェーダーの登録～• 組み込みシェーダーの登録後のGraphics設定画面

シェーダーを登録せずにビルドした場合• Unityエディタでは正常に動いていたアプリケーションですが、この後のステップでビルドが正常に完了しても、実行時にシェーダーが見つからずSlicerが図のような表示になります• モジュールの実行途中に内部エラーとなるため、UIのモジュール一覧にもSlicerが登録されていません(Isosurfaceも同様です)Windows用実行ファイル作成(1)• メニューから[File]-[Build Settings]でビルド設定を開き、Platformが「PC, Mac &Linux Standalone」になっていることを確認し、「Add Open Scenes」ボタンで現在開いているシーンをビルド対象として追加しますWindows用実行ファイル作成(2)• 「Build」ボタンを押し、ビルドしたファイルの出力先を指定します。ビルドの際、複数のファイルが出力されるため、下の図ではプロジェクトディレクトリ内に「Build」という名前のフォルダを新規に作成し、出力先として指定しています

何もないところで右クリックメニューから新規フォルダを作成できますWindows用実行ファイル作成(3)• ビルドが完了するとビルドフォルダ以下に実行ファイルが生成されます• プロジェクトフォルダはUnityエディタのプロジェクトウィンドウでの右クリックメニューから「Show in Explorer」を選択することでも開くことができます• 実行ファイルは下の図でハイライトされている右端のファイルですWindows用実行ファイル作成(4)• 生成された実行ファイルをダブルクリックすると、構築したアプリケーションが全画面表示で実行されます• GUIからモジュール選択やパラメータ設定ができることを確認してください。GUIはダブルクリックで表示/非表示を切り替えることができます• アプリケーションの終了は Alt + F4 キーです

[参考] PC-HMDでの立体視表示• メニューから[Edit]-[Project Settings]でProject Settingsウィンドウを表示し、Playerを選択、最下部にある[XR Settings]の「Virtual Reality Supported」を有効にすることで、Unityエディタでの実行、ビルド後の実行ファイル共にPC-HMDでの表示が可能となります(Oculus Quest 2 + Oculus Link、StermVR(OpenVR)で実行を確認しています)※ PCへのHMDの接続が必要です※ XR Plugin Management には未対応です[参考] Android用ビルドの準備[開発者オプションの有効化]• [設定]ー[デバイス情報]にあるビルド番号を7回タップして開発者オプションを有効にする(PIN/パターン/パスワードの入力が必要になります)[USBデバッグの有効化]• [設定]ー[システム]ー[開発者オプション]でUSBデバッグを有効にする• USBケーブルでPCに接続した際、「USBデバッグを許可しますか」のダイアログが出たら「許可」を押す[開発者オプションの無効化]• [設定]ー[システム]ー[開発者オプション]で最上部のスイッチをONからOFFにする※機種によって設定項目の場所や表示されるメッセージが異なる可能性があります※WS終了後、不要であれば開発者オプション、USBデバッグは共に無効にしてください。
特にUSBデバッグを有効のままにした場合、一部のアプリが動作しない場合があります[参考] Android用ビルド(1)• メニューから[File]-[Build Settings]でビルド設定を開き、 ターゲットプラットフォームをPCからAndroidに変更した後「Switch Platform」ボタンを押して確定します[参考] Android用ビルド(2)• [Project Settings]ー[Player]ー[Other Settings]で「Auto Graphics API」にチェックが入っていることを確認します(後述のCardboard用)

[参考] Android用ビルド(3)• Android機をデータ通信可能なUSBケーブルでPCに接続し、「Build And Run」ボタンを押します[参考] Android用ビルド(4)• ビルドしたファイルの出力先を指定します。下図ではWindows用ビルドの際に作成した「Build」フォルダを出力先、「visassets.apk」というファイル名で出力します[参考] Android用ビルド(5)• ビルドが成功するとAndroid機上でアプリケーションが実行されます• 実機にインストールされるため、USBケーブルを抜いた後も実行できます• 「Build」ディレクトリ内のAPKファイルも転送してインストールが可能です• GUIで可視化モジュールの選択やパラメータの変更ができることを確認してください
ドラッグ：回転
ピンチイン・ピンチアウト：
拡大縮小表示ダブルタップ：GUIの表示/非表示の切り替え

[参考] Cardboard対応ビルド(1)• [Project Settings]-[Player]-[XR Settings]の「Virtual Reality Supported」を有効にし、「Virtual Reality SDKs」を「None」、「Cardboard」の順にすることで、Cardboardの二眼表示が可能となります(画面左上のアイコンをタップ/ダブルタップで通常表示に戻ります)[参考] Cardboard対応ビルド(2)• ビルド時に “Company Name” のエラーが出る場合は[Project Settings][Player]内の「Package Name]を設定してください(com.visws.visassetsなどでよいです)ベクトル場の可視化(1)• ReadField用データにはベクトル場のデータが含まれていませんので、「ReadV5」モジュールを使ってCAVE型VR装置用可視化ソフトウェアVFIVEのサンプルデータ(ABC Flow)に含まれるベクトル場データを可視化してみましょう• ダウンロードしたデータ(sample_big2.tar.gz)を展開し、アーカイブに含まれる8つのファイルを「sample_big2」という名前のフォルダに入れます(フォルダの作成場所はどこでも構いません)• 「sample_big2」フォルダをUnityエディタのプロジェクトウィンドウのAssets/StreamingAssets にドラッグアンドドロップし、アセットとして登録しますベクトル場の可視化(2)• 現在開いているシーンを保存し、プロジェクトウィンドウからAssets/VisAssets/Scenes にある ReadV5Sample.scene をダブルクリックしますベクトル場の可視化(3)• このサンプルシーンでは既に可視化モジュールが接続されています• 次のスライドでABC Flowのデータを読み込むための設定をしますベクトル場の可視化(4)• サンプルシーンはVFIVEの別のサンプルデータ(ダイナモシミュレーション)を対象として設定されていますので、ABC Flowのデータ用に設定を変更します(ファイル名の変更の他、エンディアン変換のためByteswapをONにしています)

変更前

変更後

ベクトル場の可視化(5)• 再生ボタンを押し、読み込みが完了すると下記のような表示になりますベクトル場の可視化(6)• ヒエラルキーウィンドウで「Extract Vector」モジュールを選択し、インスペクタからベクトル場の各軸成分(Channel 0～2)を下図のように設定します
各Channelをチェックボックスで有効にすることで、各軸成分が選択可能になります

変更前

変更後

ベクトル場の可視化(7)• シーン上に表示されたUIManagerのGUIからの設定も可能です
各Channelをチェックボックスで有効にすることで、各軸成分が選択可能になりますベクトル場の可視化(8)• 設定が完了すると下記のような表示になります• 「Extract Vector」モジュールで設定したベクトル場が、子として接続された「Arrows」モジュールによりゲームビューの左側に多数の矢印として描画されますベクトル場の可視化(9)• 「Arrows」モジュールは、ベクトル場データを入力とし、指定した断面上のベクトル場を矢印で表現するためのモジュールです• インスペクタから、またはシーン上のGUIから軸と断面位置の設定ができます

Axis=0, Slice=0.5

Axis=2, Slice=0.5

Axis=1, Slice=0.5

ベクトル場の可視化(10)• 等値面についても併せて設定したものが下図となります新たなモジュールの開発(1)
VisAssetsにおける可視化モジュール• 必要な機能を実装したC#スクリプトなどをアタッチしたゲームオブジェクト

C#スクリプト(モジュール間の状態遷移の制御用)

C#スクリプト(テキストファイル読込用)

C#スクリプト(構造格子データ格納用)
C#スクリプト(マウスでの回転・拡大縮小用)

空のゲームオブジェクト

ReadFieldモジュール

新たなモジュールの開発(2)• モジュール間の接続チェックや、パラメータ変更の他のモジュールへの伝達についてはパッケージに含まれるテンプレートクラスが処理するため、開発者はテンプレートクラスを継承した新たなクラスのオーバーライド関数に必要な機能を実装すればよい

C#スクリプト(モジュール間の状態遷移の制御用)

C#スクリプト(テキストファイル読込用)

C#スクリプト(構造格子データ格納用)
C#スクリプト(マウスでの回転・拡大縮小用)

ReadFieldモジュール

本パッケージに含まれるスクリプトをそのままアタッチ
本パッケージに含まれる、読み込み用テンプレートクラスを継承し、必要な機能をオーバーライド関数に実装したスクリプトをアタッチ
本パッケージに含まれるスクリプトをそのままアタッチ新たなモジュールの開発(3)• C#スクリプトの例(1): データ読み込みモジュール用// 読み込みモジュール用テンプレートクラスを継承したクラス
public class ReadField : ReadModuleTemplate{
public override void InitModule(){// モジュールの初期化処理を記述}}

public override int BodyFunc(){// Unityにおけるフレーム毎のイベントループで親モジュールや自身のパラメータを監視し、// それらに変更があった場合に実行される処理を記述する// このスクリプトの場合はデータ読み込み用なので、// ファイルダイアログから指定されたファイルや組み込みデータの読み込み処理を記述する}

新たなモジュールの開発(4)• C#スクリプトの例(2): フィルターモジュール用// フィルターモジュール用テンプレートクラスを継承したクラス
public class ExtractScalar : FilterModuleTemplate{// 下の二つのメンバ変数はテンプレートクラスで宣言しているため// 継承したクラスではそれぞれ pdf, df の変数名でアクセス可能// public DataField pdf; // 親モジュールのDataField// public DataField df; // 自身のDataField
public int selected_channel;
public override void InitModule(){// モジュールの初期化処理を記述
selected_channel = 0;}}

public override int BodyFunc(){// Unityにおけるフレーム毎のイベントループで親モジュールや自身のパラメータを監視し、// それらに変更があった場合に実行される処理を記述する
df.elements[0] = pdf.elements[selected_channel].Clone();}まとめ• 本チュートリアルでは、Unity用可視化フレームワーク「VisAssets」をハンズオン形式で体験して頂きました• 本フレームワークは現在も開発中のものであり、同梱した各モジュールもサンプル実装のため、高速化など改良の余地は多々あります• 新たなモジュール開発もしやすい設計となっていますので、よろしければ是非皆さんも開発にご参加ください謝辞
本研究の一部はJSPS科研費JP19K11995の助成を受けたものです．

[付録] VFIVE用データの読み込み
CAVE型VR装置用可視化ソフトウェア VFIVE• https://www.jamstec.go.jp/ceist/aeird/avcrg/vfive.ja.html
ダイナモシミュレーションデータ (sample_little.tar.gz)• アプリ組み込みデータとする際は Assets/StreamingAssets/sample_little の下にデータを配置し、下記のようにReadV5モジュールの設定をする• ReadV5の設定：Filename = sample_little/dynamo.v5
Load At Startup = ON, Use Embedded Data = ON
Precision=DOUBLE, byteswap = OFF, header = ON
ABC Flow (sample_big2.tar.gz)• アプリ組み込みデータとする際は Assets/StreamingAssets/sample_big2 の下にデータを配置し、下記のようにReadV5モジュールの設定をする• ReadV5の設定：Filename = sample_big2/abc_flow.v5
Load At Startup = ON, Use Embedded Data = ON
Precision=DOUBLE, byteswap = ON, header = ON

[付録] GrADS用データの読み込み
GrADS (The Grid Analysis and Display System)• http://cola.gmu.edu/grads/• テキストファイル(読込用)＋バイナリファイル(データ本体)で構成• サンプルモジュール(ReadGrADS)では非圧縮のバイナリデータのみに対応(本家GrADSはNetCDFやGRIBにも対応)
サンプルデータ• ダウンロードページにある example.tar.gz