Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AR 世界を Web 化するには / ar-web
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
tarukosu
December 05, 2020
Programming
700
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AR 世界を Web 化するには / ar-web
tarukosu
December 05, 2020
More Decks by tarukosu
See All by tarukosu
HoloLens と Power Platform / HoloLens and Power Platform
tarukosu
0
580
ホロラボでの HoloLens アプリ開発技術 / App Development at HoloLab
tarukosu
1
3.7k
Other Decks in Programming
See All in Programming
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
3
1.7k
느린 네트워크와 저사양 디바이스 사용자를 위한 웹뷰 로딩 시간 개선기
kmkim
1
180
AI駆動開発4年目の現在地(『あなたはFDEになるべきか?』イベント資料)
kumaiu
0
130
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
350
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.6k
はじめてのPLATEAU
nokonoko1203
1
350
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
570
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
3
1.4k
ChromeでローカルLLM
ryu1013
0
190
複数ドメインを一つのアプリに統合するFlutterの設計と運用_FlutterKaigi2026登壇資料(須永高弘)
takahirosunaga
0
140
AI-Powered Domain-Driven Design
ziobrando
0
380
TS 7.0 で baseUrl が使えなくなった今、パスエイリアスをどうするか
bicstone
2
480
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
4
4.1k
ラッコキーワード サービス紹介資料
rakko
5
5.7M
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
470
Building Adaptive Systems
keathley
44
3.3k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
350
Claude Code のすすめ
schroneko
67
230k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
400
Documentation Writing (for coders)
carmenintech
77
5.6k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Balancing Empowerment & Direction
lara
6
1.4k
Transcript
Copyright© HoloLab Inc. 2020 All rights reserved 1 AR 世界を
Web 化するには 株式会社ホロラボ Researcher 古田裕介 たるこす(@tarukosu)
近い将来、一般ユーザーが空間に紐づいたコンテンツを投稿し、 スマートフォンやグラス型デバイスを使って閲覧するようなサービス が普及するのではないか SNS: その場所で投稿されたメッセージや写真が見られる レビューサービス: 目の前の店の評価が見られる
3D データとテキストやノードベースのプログラムをユーザーが アップロードし、他のユーザーが表示することができるサービスも 増えるのではないか VRChat のようなイメージ
個人開発のARアプリも増えてくるはず
こうなってほしい ・別々のサービスが提供しているコンテンツを同時に表示したい ・ユーザーが作成したデータやスクリプトはいろいろなアプリケーショ ンで表示できてほしい(特定のサービス専用になってほしくない) ・コンテンツ側で自由にプログラムが書ける Web における ブラウザと Web ページのような仕組みが必要
課題 ・プロトコル、フォーマットが標準化されていない ・スクリプトの動的ローディングをどう実現するか Web AR 世界の Web ネットワークプロトコル HTTP HTTP
? コンテンツ HTML ? スクリプト JavaScript WebAssembly (wasm) ? 3D モデル GLB ? WebAssembly はWebブラウザ上で動作する低水準言語 ブラウザ外(サーバアプリ、クライアントアプリ)での利用のための標準化も行われている
プロトタイプを作ってみた Copyright© HoloLab Inc. 2020 All rights reserved 7
UniWasm WebAssembly が Unity アプリ上で動けば、 スクリプトの動的ローディングが実現できるのでは https://github.com/tarukosu/UniWasm Web UniWasm ネットワークプロトコル
HTTP HTTP コンテンツ HTML XML [独自フォーマット] スクリプト JavaScript WebAssembly (wasm) WebAssembly (wasm) 3D モデル GLB [予定]
コンテンツ 構成図 Copyright© HoloLab Inc. 2020 All rights reserved 9
WebAssembly (wasm) XML A-Frame (ブラウザ) Unity Rust AssemblyScript ノードエディタ
コンテンツ定義 独自フォーマットの XML <body> <primitive type="cube"> <script src="./translate_x.wasm"/> </primitive> <element
position.x="3"> <primitive type="cube"> <script src="./circular_motion.wasm"/> </primitive> </element> </body> 動作を定義した WebAssembly 立方体を配置
WebAssembly でオブジェクトを動かす仕組み Copyright© HoloLab Inc. 2020 All rights reserved 11
WebAssembly (wasm) WebAssembly では、外部で定義した関数の呼び出しや、 外部から WebAssembly 側の関数の呼び出しが可能 アプリケーション内 のコード Update (毎フレーム呼び出される) GetPosition (オブジェクト位置の取得) SetPosition (オブジェクト位置を更新)
Rust による動作定義 Update 関数内で毎フレームのオブジェクトの移動を実装 circular_motion.rs translate_x.rs
ブラウザで動作するノードエディタ Copyright© HoloLab Inc. 2020 All rights reserved 13 export
declare function transform_set_local_position(x: f32, y: f32, z: f32): void; ... export function update(): void { const number1num = 1.2 as f32; const number2num = -1 as f32; const number3num = 3 as f32; const number4num = 0.01 as f32; ... ノード定義を AssemblyScript に変換し、 WebAssembly にコンパイル
Unity での動作デモ
A-Frame での動作デモ Copyright© HoloLab Inc. 2020 All rights reserved 15
まとめ • WebAssembly を使うことで、スクリプトの動的ローディングが行えた • WebAssembly を介することで、コンテンツ側で利用できる言語の幅 が広がり、また、実行できるプラットフォームの幅も広がる • 今後は
WebAssembly 側のコードで通信ができるようにしたい Copyright© HoloLab Inc. 2020 All rights reserved 16