Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
裸眼で拡張現実!!
プロジェクションマッピングとAIで
世界最先端研究を丸見えに
2018/5/9
尾﨑竜二
だるまジャパン合同会社 / 代表社員CEO
北川正義
だるまジャパン合同会社 / 業務執行社員
宇治原徹
名古屋大学 未来材料システム...
発表者紹介
尾﨑 竜二
だるまジャパン合同会社
代表社員 CEO
宇治原 徹
名古屋大学 未来材料・システム研究所
教授
北川 正義
だるまジャパン合同会社
業務執行社員
本日の内容
1.だるまジャパン合同会社の紹介
2.名古屋大学 宇治原ラボの研究について(名大 宇治原教授)
3.裸眼ARとは
4.演出とグラフィック実装
5.ログデータの取得
6. 機械学習スクリプト(Python)との連携
7.まとめ
だるまジャパンの紹介
• 岐阜県大垣市 ソフトピアジャパン内で活動
• プロジェクションマッピング技術を用いた研究開発
• プロジェクションマッピング技術を身近なところで実用的に使う
• エンタメコンテンツ開発が得意
だるまジャパン合同会社 http://drmjp...
• 中京テレビの子供むけイベント
らくがきチュウキョ〜くん
・3Dプリントした立体キャラクターに映像を投影
・さわると、星・ハートが飛び出るギミックあり
・明るいところでも使える小型PMボックスを作成
※PM = プロジェクションマッピング
・...
• 中京テレビの子供むけイベント
らくがきチュウキョ〜くん
・3Dプリントした立体キャラクターに映像を投影
・さわると、星・ハートが飛び出るギミックあり
・明るいところでも使える小型PMボックスを作成
※PM = プロジェクションマッピング
・...
• NTTドコモ AIエージェント基盤を 
利用したコンテンツ
聞き酒君
・音声対話でお酒 or ソフトドリンクを注ぐ
・小型PMボックスを使用し、紙コップにPM
※PM = プロジェクションマッピング
https://dev.smt.doco...
リアルタイム結晶成長可視化

システム
• 名古屋大学 未来材料・システム研究所
宇治原研究室
本日ご紹介
実験装置の内部をリアルタイムに可視化
SiC結晶を生成する実験装置にPM
高品質で高純度なゲルマニウム結晶の開発が
実現のカギだった
http://www.shmj.or.jp
http://www.nobelprize.org/
The Novel Prize in Physics 1956
Shockley Ba...
高品質な窒化ガリウム結晶の開発が
実現のカギだった
http://www.nobelprize.org/
The Novel Prize in Physics 2014
AKASAKI NAKAMURAAMANO
世界初の青色発光ダイオード
P...
SiC パワーデバイス
省エネ技術の
キーテクノロジー
シリコンカーバイド (SiC)
SiCパワーデバイスによる省エネ効果
8 〜 30 over
Only in Japan
シミュレーションによる予測
1条件あたり 約5時間
機械学習による予測
1条件あたり
 約0.03秒
超高速化を実現
最先端科学に職人技を
裸眼ARを実現するための
プロジェクションマッピング
裸眼ARとは
• プロジェクションマッピングを応用してARと同等の見え方を裸眼で実現
• 錯視を用いた表現
• 現実空間との調和
• 自然な体験設計
錯視を用いた表現 - 動く -
錯視を用いた表現 - 歩く -
錯視を用いた表現 - 透ける -
この表現を応用
立体物での錯視演出
1 2
3
• 投影面の中でできる表現しかできない
• 投影面や形状に合わせた演出を考える
• 投影面の距離の差によって大きく歪みが出る
• プロジェクターと体験者の見る位置の差による歪み
• 歪みが目立たないような演出を行...
演出とグラフィック実装
実装手順
テスト投影
企画
コンセプト
モデリング
マテリアル
ライティング
ポストエフェク
ト
投影調整
演出
テスト投影
実装手順
テスト投影
企画
コンセプト
モデリング
マテリアル
ライティング
ポストエフェク
ト
投影調整
演出
宇治原教授からの要望
• 各所に取り付けられたセンサーのログデータから直感的にビジュアライズ
• 重要な手作業であるシードタッチ(結晶軸を溶液につける作業)を可視化
• 装置の気持ちが感じ取れるようにしたい
• 実験中に新たな発見ができるように...
ボツ案
企画 -決定稿-
ログデータと連動して中身を透視するフォトリアルな表現
実装手順
テスト投影
企画
コンセプト
モデリング
マテリアル
ライティング
ポストエフェク
ト
投影調整
演出
モデリング
• 現物と写真を元にモデリング
• パーツ全てを正確にはモデリングしていない(見た目を重視)
• 中心部(結晶を作る部分)は断面
• 中心部パーツのスケールの比率は図面に合わせる
マテリアル
• 実物と写真を元に作成
• ほぼ全てのパーツをSubstance Designerで作成
• Unity内で調整可能なようにプロパティを設定
リアルさより調整できることを優先
ライティング - 温度変化 -
問題点
Referenceするものがない
高温になると材料が色変化と共に自己発光する
これを元に絵作り
ライティング - カラー・キー -
常温 1500℃ 1800℃
ライティング & リフレクション - 実装 -
• 室内環境のHDRIを使用
• スポットライトを使用
• 温度変化は中心部にポイントライトを配置し自己発光を擬似的に再現
• リフレクション用に現実にある柵を配置(レンダリングはしない)
• リ...
Lighting Only
Reflection Probe
Screen Space Reflection
Reflection Probe + Screen Space Reflection
ポストエフェクト
• Post Processing Stackを使用
Antialiasing
Ambient Occlusion
Depth Of Field
Color Grading
Bloom
Metallic数値によるライトの影響
Metallic 1.0 Metallic 0.8
実装手順
テスト投影
企画
コンセプト
モデリング
マテリアル
ライティング
ポストエフェク
ト
投影調整
演出
投影用カバー
機材設置
プロジェクタは上部
視線は下から見上げる
形に合うように映像を歪ませて投
影する
投影調整 - 形状 -
投影調整 - 位置 -
• 現物と投影映像の位置関係が一致するように調整
• モデルの比率は合わせてあるので数式である程度の位置を出す
• 投影用に形状を変形させているので位置が合わない
現物の位置を見ながらモデルを微調整
投影調整 - グラフィック -
• ディスプレイのグラフィックがそのまま投影されるわけではない
• プロジェクタの明るさ等の個体差
• 周りの環境
• 投影面の素材や色
投影しながらグラフィックを微調整
溶液の温度や流速の分布が
小さくて見えない
問題点
ズーム機能
ズーム機能 - 演出 -
顕微鏡で覗くような演出
形状的に難しい
虫眼鏡とカメラのレンズを合わせたような形状
覗くという行為と機械的なギミックを合わせたもの
ズーム機能 - 演出 -
斜め上からIN
ズーム状態でフォーカス
切り替え背景ぼかす
中心部を拡大
ズーム機能 - 実装 -
ズームオブジェクトの子オブジェクト
にカメラを配置
レンダーテクスチャで表示
Cinemachineで位置が変わっても
常に中央を映すように設定
ポストエフェクトのDoFでフォーカ
スを切り替えて背景をぼかす
音声で操...
ログデータの取得
Modbus RTU
• PLC(programmable logic controller)と通信するプロトコル
• RS-422AをUSBに変換してPCと接続
PLC Windows PC実験装置
・温度
・位置
・回転
etc…
ログ
Modbus RTU
https://program-plc.blogspot.jp/2015/11/modbus-serial-communication-between-plc.html出典:
RS-422A
PLC側 USBに変換するアダプタ
PLC
PC
RS-232Cよりも伝送速度が速く
伝送距離が長いがコネクタが
規定されていないため配線が大変
連動して移動・回転
送られてくる
ログデータ
実験装置
PCの画面
機械学習スクリプト(Python)との連携
Pythonスクリプト ー 温度分布(名古屋大学で作成)
Python Image
機械学習実験装置のログ
・温度
・位置
・回転
etc…
・機械学習によりログデータに対応した溶液の温度分布を回帰し、画像を生成する
温度分布画像
Matplo...
Pythonスクリプト ー 流速分布(名古屋大学で作成)
流速分布画像
Matplotlibで画像化
流れの向きと大きさをベクトルで表現
Python Image
機械学習実験装置のログ
・温度
・位置
・回転
etc…
・機械学習によりログデ...
UnityとPythonをどうやって連携させるか?
• Websocket通信
Websocket通信
• Unity側は「websocket-sharp」を使用しサーバに
• Python側は「AutobahnPython」を使用しクライアントに
安定した通信
接続が途切れても再接続する
http://autobahn....
Unity
Python
完了通知
ログ
Websocketサーバ
Websocketクライアン
ト
・温度
・位置
・回転
etc…
(websocket-sharp)
(AutobahnPython)
機械学習
Websocket通信でUn...
温度分布の表示
Websocket通信でUnityとPythonスクリプトを連携
Unity
Python Image
完了通知 機械学習
ログ
Websocketサーバ Websocketクライアン
・温度
・位置
・回転
etc…
テクスチャとして貼り付ける
テクスチャの貼り付け
Pythonスクリプトで生成した温度分布画像テクスチャとして貼り付ける
テクスチャとして貼り付け可能な状態に整形
結果表示
Unityアプリケーション
Pythonアプリケーション
(温度分布)
実際の動作画面
流速分布の表示
流速分布を同様に表示
テクスチャとして貼り付ける Pythonスクリプトで生成した流速分布画像
流速分布を同様に表示
拡大してもダメ
何も見えない・・・
改善が必要
問題点
• 温度分布
将来的にMatplotlibを使えない状況になるかもしれない
Matplotlibで生成したベクトルの視認性が悪い
• 流速分布
Matplotlibの使用をやめ、Pythonの出力をCSVファイルに
UnityにCSVを...
Pythonスクリプトの出力をCSVに
Unity
Python Image
完了通知 機械学習
ログ
Websocketサーバ Websocketクライアン
・温度
・位置
・回転
etc…
テクスチャとして貼り付ける
Pythonスクリプトの出力をCSVに
Unity
Python CSV
完了通知 機械学習
ログ
Websocketサーバ Websocketクライアン
・温度
・位置
・回転
etc…
Unity側で加工
温度分布の表示
CSV
温度
1800
1810
1850
1860
カラーマップ
温度分布テクスチャ
(MatplotlibのJetカラーマップと同等)
:
1830
• Gradientクラスにカラーマップを作成し、CSVの数値に対応する色...
流速分布の表示
• FlowMapシェーダーの利用
http://graphicsrunner.blogspot.jp/2010/08/water-using-flow-maps.html
FlowMap
R=128R=128
G=255G=255
R=255R=255
G=255G=255
R=0R=0
G=255G=255
R=128R=128
G=128G=128
R=255R=255
G=128G=128
R=0R=0
G...
FlowMapシェーダー
float3 flowDir = tex2D(_FlowMap, IN.texcoord) * 2.0f - 1.0f;
flowDir *= _FlowSpeed;
float phase0 = frac(_Time...
FlowMapシェーダー
FlowMap テクスチャUVチェッカー 流れを表現
✖
CSVの数値からFlowMapテクスチャを生成
CSV
x y
0.2 0.3
-0.1 0.4
0 0
0.3 -0.8
FlowMap テクスチャ
U(X)V(Y)
変位
0.5 0.2
:
流速表示テスト用アプリケーション
テスト用Unityアプリケーション シェーダー
結果表示
Pythonアプリケーション
(温度分布)
Unityアプリケーション
Pythonアプリケーション
(流速分布)
最終動作構成
Unity
Python
Websocketサーバ
Websocketクライアン
Python
完了通知
Websocket通信でUnityとPythonスクリプトを連携
CSV
CSV
温度分布
流速分布
ログ
ログ
実際の動作画面
他に試したこと
Pythonコードの保護(難読化)
• Cythonによるコンパイル
• Pythonスクリプトの中身が見られないようになる
• Cに変換するので処理速度が向上
TensorFlowSharpを使用
• Unity上で温度分布や流速分布をプレディクトする
• 学習モデルはPythonで作成
• Unityだけで完結する
• スレッド処理が必要(async~await)
Websocket通信を使うメリット
• 機械学習部分(名古屋大学担当) と Unityアプリ(だるまジャパン担当)
を分離して研究開発できる
• 今後、機械学習スクリプト(Websocketクライアント)が増えても対応可能
まとめ
最先端研究にUnityを用いた事例を提示した
エンタメから次世代材料開発まで
は様々な分野で活用できる!
・名古屋大学 公式プレスリリース
http://www.nagoya-u.ac.jp/about-nu/public-relations/researchinfo/upload_images/20170929_imass_1.pdf
https...
Thank you!
ご静聴ありがとうございました!
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに
Upcoming SlideShare
Loading in …5
×

【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに

1,475 views

Published on

尾崎 竜二(だるまジャパン合同会社)
北川 正義(だるまジャパン合同会社)
宇治原 徹(名古屋大学 未来材料・システム研究所)

Published in: Technology
  • Be the first to comment

【Unite 2018 Tokyo】裸眼で拡張現実!!プロジェクションマッピングとAIで世界最先端研究を丸見えに

  1. 1. 裸眼で拡張現実!! プロジェクションマッピングとAIで 世界最先端研究を丸見えに 2018/5/9 尾﨑竜二 だるまジャパン合同会社 / 代表社員CEO 北川正義 だるまジャパン合同会社 / 業務執行社員 宇治原徹 名古屋大学 未来材料システム研究所 / 教授
  2. 2. 発表者紹介
  3. 3. 尾﨑 竜二 だるまジャパン合同会社 代表社員 CEO 宇治原 徹 名古屋大学 未来材料・システム研究所 教授 北川 正義 だるまジャパン合同会社 業務執行社員
  4. 4. 本日の内容
  5. 5. 1.だるまジャパン合同会社の紹介 2.名古屋大学 宇治原ラボの研究について(名大 宇治原教授) 3.裸眼ARとは 4.演出とグラフィック実装 5.ログデータの取得 6. 機械学習スクリプト(Python)との連携 7.まとめ
  6. 6. だるまジャパンの紹介
  7. 7. • 岐阜県大垣市 ソフトピアジャパン内で活動 • プロジェクションマッピング技術を用いた研究開発 • プロジェクションマッピング技術を身近なところで実用的に使う • エンタメコンテンツ開発が得意 だるまジャパン合同会社 http://drmjpn.jp/
  8. 8. • 中京テレビの子供むけイベント らくがきチュウキョ〜くん ・3Dプリントした立体キャラクターに映像を投影 ・さわると、星・ハートが飛び出るギミックあり ・明るいところでも使える小型PMボックスを作成 ※PM = プロジェクションマッピング ・子供の落書きどおりにキャラクターが変身
  9. 9. • 中京テレビの子供むけイベント らくがきチュウキョ〜くん ・3Dプリントした立体キャラクターに映像を投影 ・さわると、星・ハートが飛び出るギミックあり ・明るいところでも使える小型PMボックスを作成 ※PM = プロジェクションマッピング ・子供の落書きどおりにキャラクターが変身
  10. 10. • NTTドコモ AIエージェント基盤を  利用したコンテンツ 聞き酒君 ・音声対話でお酒 or ソフトドリンクを注ぐ ・小型PMボックスを使用し、紙コップにPM ※PM = プロジェクションマッピング https://dev.smt.docomo.ne.jp/?p=common_page&p_name=sebastien_teaser NTTドコモAIエージェント基盤
  11. 11. リアルタイム結晶成長可視化
 システム • 名古屋大学 未来材料・システム研究所 宇治原研究室 本日ご紹介 実験装置の内部をリアルタイムに可視化 SiC結晶を生成する実験装置にPM
  12. 12. 高品質で高純度なゲルマニウム結晶の開発が 実現のカギだった http://www.shmj.or.jp http://www.nobelprize.org/ The Novel Prize in Physics 1956 Shockley BardeenBrattain 世界初のトランジスター(コンピュータの卵)
  13. 13. 高品質な窒化ガリウム結晶の開発が 実現のカギだった http://www.nobelprize.org/ The Novel Prize in Physics 2014 AKASAKI NAKAMURAAMANO 世界初の青色発光ダイオード Photo by Mike Deal
  14. 14. SiC パワーデバイス 省エネ技術の キーテクノロジー シリコンカーバイド (SiC)
  15. 15. SiCパワーデバイスによる省エネ効果 8 〜 30 over Only in Japan
  16. 16. シミュレーションによる予測 1条件あたり 約5時間 機械学習による予測 1条件あたり  約0.03秒 超高速化を実現
  17. 17. 最先端科学に職人技を
  18. 18. 裸眼ARを実現するための プロジェクションマッピング
  19. 19. 裸眼ARとは • プロジェクションマッピングを応用してARと同等の見え方を裸眼で実現 • 錯視を用いた表現 • 現実空間との調和 • 自然な体験設計
  20. 20. 錯視を用いた表現 - 動く -
  21. 21. 錯視を用いた表現 - 歩く -
  22. 22. 錯視を用いた表現 - 透ける - この表現を応用
  23. 23. 立体物での錯視演出 1 2 3 • 投影面の中でできる表現しかできない • 投影面や形状に合わせた演出を考える • 投影面の距離の差によって大きく歪みが出る • プロジェクターと体験者の見る位置の差による歪み • 歪みが目立たないような演出を行う 要望に合った演出を考えなければならない さまざまな制約がある中で A B
  24. 24. 演出とグラフィック実装
  25. 25. 実装手順 テスト投影 企画 コンセプト モデリング マテリアル ライティング ポストエフェク ト 投影調整 演出
  26. 26. テスト投影
  27. 27. 実装手順 テスト投影 企画 コンセプト モデリング マテリアル ライティング ポストエフェク ト 投影調整 演出
  28. 28. 宇治原教授からの要望 • 各所に取り付けられたセンサーのログデータから直感的にビジュアライズ • 重要な手作業であるシードタッチ(結晶軸を溶液につける作業)を可視化 • 装置の気持ちが感じ取れるようにしたい • 実験中に新たな発見ができるようにしたい カッコ良くしてほしい!!!!! 実験が楽しくなるように!!!!
  29. 29. ボツ案
  30. 30. 企画 -決定稿- ログデータと連動して中身を透視するフォトリアルな表現
  31. 31. 実装手順 テスト投影 企画 コンセプト モデリング マテリアル ライティング ポストエフェク ト 投影調整 演出
  32. 32. モデリング • 現物と写真を元にモデリング • パーツ全てを正確にはモデリングしていない(見た目を重視) • 中心部(結晶を作る部分)は断面 • 中心部パーツのスケールの比率は図面に合わせる
  33. 33. マテリアル • 実物と写真を元に作成 • ほぼ全てのパーツをSubstance Designerで作成 • Unity内で調整可能なようにプロパティを設定 リアルさより調整できることを優先
  34. 34. ライティング - 温度変化 - 問題点 Referenceするものがない 高温になると材料が色変化と共に自己発光する これを元に絵作り
  35. 35. ライティング - カラー・キー - 常温 1500℃ 1800℃
  36. 36. ライティング & リフレクション - 実装 - • 室内環境のHDRIを使用 • スポットライトを使用 • 温度変化は中心部にポイントライトを配置し自己発光を擬似的に再現 • リフレクション用に現実にある柵を配置(レンダリングはしない) • リフレクションプローブ • ポストプロセスのScreen Space Reflection
  37. 37. Lighting Only
  38. 38. Reflection Probe
  39. 39. Screen Space Reflection
  40. 40. Reflection Probe + Screen Space Reflection
  41. 41. ポストエフェクト • Post Processing Stackを使用
  42. 42. Antialiasing
  43. 43. Ambient Occlusion
  44. 44. Depth Of Field
  45. 45. Color Grading
  46. 46. Bloom
  47. 47. Metallic数値によるライトの影響 Metallic 1.0 Metallic 0.8
  48. 48. 実装手順 テスト投影 企画 コンセプト モデリング マテリアル ライティング ポストエフェク ト 投影調整 演出
  49. 49. 投影用カバー
  50. 50. 機材設置 プロジェクタは上部 視線は下から見上げる 形に合うように映像を歪ませて投 影する
  51. 51. 投影調整 - 形状 -
  52. 52. 投影調整 - 位置 - • 現物と投影映像の位置関係が一致するように調整 • モデルの比率は合わせてあるので数式である程度の位置を出す • 投影用に形状を変形させているので位置が合わない 現物の位置を見ながらモデルを微調整
  53. 53. 投影調整 - グラフィック - • ディスプレイのグラフィックがそのまま投影されるわけではない • プロジェクタの明るさ等の個体差 • 周りの環境 • 投影面の素材や色 投影しながらグラフィックを微調整
  54. 54. 溶液の温度や流速の分布が 小さくて見えない 問題点 ズーム機能
  55. 55. ズーム機能 - 演出 - 顕微鏡で覗くような演出 形状的に難しい 虫眼鏡とカメラのレンズを合わせたような形状 覗くという行為と機械的なギミックを合わせたもの
  56. 56. ズーム機能 - 演出 - 斜め上からIN ズーム状態でフォーカス 切り替え背景ぼかす 中心部を拡大
  57. 57. ズーム機能 - 実装 - ズームオブジェクトの子オブジェクト にカメラを配置 レンダーテクスチャで表示 Cinemachineで位置が変わっても 常に中央を映すように設定 ポストエフェクトのDoFでフォーカ スを切り替えて背景をぼかす 音声で操作 Windows.Speechの KeywordRecognizerを使用
  58. 58. ログデータの取得
  59. 59. Modbus RTU • PLC(programmable logic controller)と通信するプロトコル • RS-422AをUSBに変換してPCと接続 PLC Windows PC実験装置 ・温度 ・位置 ・回転 etc… ログ
  60. 60. Modbus RTU https://program-plc.blogspot.jp/2015/11/modbus-serial-communication-between-plc.html出典:
  61. 61. RS-422A PLC側 USBに変換するアダプタ PLC PC RS-232Cよりも伝送速度が速く 伝送距離が長いがコネクタが 規定されていないため配線が大変
  62. 62. 連動して移動・回転 送られてくる ログデータ 実験装置 PCの画面
  63. 63. 機械学習スクリプト(Python)との連携
  64. 64. Pythonスクリプト ー 温度分布(名古屋大学で作成) Python Image 機械学習実験装置のログ ・温度 ・位置 ・回転 etc… ・機械学習によりログデータに対応した溶液の温度分布を回帰し、画像を生成する 温度分布画像 Matplotlibで画像化 溶液部分の半分
  65. 65. Pythonスクリプト ー 流速分布(名古屋大学で作成) 流速分布画像 Matplotlibで画像化 流れの向きと大きさをベクトルで表現 Python Image 機械学習実験装置のログ ・温度 ・位置 ・回転 etc… ・機械学習によりログデータに対応した溶液の流速分布を回帰し、画像を生成する 溶液部分の半分
  66. 66. UnityとPythonをどうやって連携させるか? • Websocket通信
  67. 67. Websocket通信 • Unity側は「websocket-sharp」を使用しサーバに • Python側は「AutobahnPython」を使用しクライアントに 安定した通信 接続が途切れても再接続する http://autobahn.readthedocs.io/en/latest/
  68. 68. Unity Python 完了通知 ログ Websocketサーバ Websocketクライアン ト ・温度 ・位置 ・回転 etc… (websocket-sharp) (AutobahnPython) 機械学習 Websocket通信でUnityとPythonスクリプトを連携
  69. 69. 温度分布の表示
  70. 70. Websocket通信でUnityとPythonスクリプトを連携 Unity Python Image 完了通知 機械学習 ログ Websocketサーバ Websocketクライアン ・温度 ・位置 ・回転 etc… テクスチャとして貼り付ける
  71. 71. テクスチャの貼り付け Pythonスクリプトで生成した温度分布画像テクスチャとして貼り付ける テクスチャとして貼り付け可能な状態に整形
  72. 72. 結果表示 Unityアプリケーション Pythonアプリケーション (温度分布)
  73. 73. 実際の動作画面
  74. 74. 流速分布の表示
  75. 75. 流速分布を同様に表示 テクスチャとして貼り付ける Pythonスクリプトで生成した流速分布画像
  76. 76. 流速分布を同様に表示 拡大してもダメ 何も見えない・・・
  77. 77. 改善が必要
  78. 78. 問題点 • 温度分布 将来的にMatplotlibを使えない状況になるかもしれない Matplotlibで生成したベクトルの視認性が悪い • 流速分布 Matplotlibの使用をやめ、Pythonの出力をCSVファイルに UnityにCSVを読み込み、数値データから温度分布・流速分布 を表現する Matplotlibの仕様に依存するので表現に柔軟性がない
  79. 79. Pythonスクリプトの出力をCSVに Unity Python Image 完了通知 機械学習 ログ Websocketサーバ Websocketクライアン ・温度 ・位置 ・回転 etc… テクスチャとして貼り付ける
  80. 80. Pythonスクリプトの出力をCSVに Unity Python CSV 完了通知 機械学習 ログ Websocketサーバ Websocketクライアン ・温度 ・位置 ・回転 etc… Unity側で加工
  81. 81. 温度分布の表示 CSV 温度 1800 1810 1850 1860 カラーマップ 温度分布テクスチャ (MatplotlibのJetカラーマップと同等) : 1830 • Gradientクラスにカラーマップを作成し、CSVの数値に対応する色を決定 それぞれの座標にその色を指定してテクスチャを生成 拡大
  82. 82. 流速分布の表示 • FlowMapシェーダーの利用 http://graphicsrunner.blogspot.jp/2010/08/water-using-flow-maps.html
  83. 83. FlowMap R=128R=128 G=255G=255 R=255R=255 G=255G=255 R=0R=0 G=255G=255 R=128R=128 G=128G=128 R=255R=255 G=128G=128 R=0R=0 G=128G=128 R=128R=128 G=0G=0 R=255R=255 G=0G=0 R=0R=0 G=0G=0 FlowMap テクスチャ • 流体の方向と速度を格納したテクスチャ • R成分にU軸方向の値、G成分にV軸方向の値 U(X)V(Y) 変位
  84. 84. FlowMapシェーダー float3 flowDir = tex2D(_FlowMap, IN.texcoord) * 2.0f - 1.0f; flowDir *= _FlowSpeed; float phase0 = frac(_Time.y * 0.5f + 0.5f); float phase1 = frac(_Time.y * 0.5f + 1.0f); half3 tex0 = tex2D(_MainTex, IN.texcoord + flowDir.xy * phase0); half3 tex1 = tex2D(_MainTex, IN.texcoord + flowDir.xy * phase1); float flowLerp = abs((0.5f - phase0) / 0.5f); half3 finalColor = lerp(tex0, tex1, flowLerp); http://advances.realtimerendering.com/s2010/index.html出典:
  85. 85. FlowMapシェーダー FlowMap テクスチャUVチェッカー 流れを表現 ✖
  86. 86. CSVの数値からFlowMapテクスチャを生成 CSV x y 0.2 0.3 -0.1 0.4 0 0 0.3 -0.8 FlowMap テクスチャ U(X)V(Y) 変位 0.5 0.2 :
  87. 87. 流速表示テスト用アプリケーション テスト用Unityアプリケーション シェーダー
  88. 88. 結果表示 Pythonアプリケーション (温度分布) Unityアプリケーション Pythonアプリケーション (流速分布)
  89. 89. 最終動作構成
  90. 90. Unity Python Websocketサーバ Websocketクライアン Python 完了通知 Websocket通信でUnityとPythonスクリプトを連携 CSV CSV 温度分布 流速分布 ログ ログ
  91. 91. 実際の動作画面
  92. 92. 他に試したこと
  93. 93. Pythonコードの保護(難読化) • Cythonによるコンパイル • Pythonスクリプトの中身が見られないようになる • Cに変換するので処理速度が向上
  94. 94. TensorFlowSharpを使用 • Unity上で温度分布や流速分布をプレディクトする • 学習モデルはPythonで作成 • Unityだけで完結する • スレッド処理が必要(async~await)
  95. 95. Websocket通信を使うメリット • 機械学習部分(名古屋大学担当) と Unityアプリ(だるまジャパン担当) を分離して研究開発できる • 今後、機械学習スクリプト(Websocketクライアント)が増えても対応可能
  96. 96. まとめ
  97. 97. 最先端研究にUnityを用いた事例を提示した エンタメから次世代材料開発まで は様々な分野で活用できる!
  98. 98. ・名古屋大学 公式プレスリリース http://www.nagoya-u.ac.jp/about-nu/public-relations/researchinfo/upload_images/20170929_imass_1.pdf https://www.asahi.com/articles/photo/AS20171201000874.html ・朝日新聞デジタル 掲載記事 リアルタイム結晶成長可視化システム 参考URL
  99. 99. Thank you! ご静聴ありがとうございました!

×