SlideShare ist ein Scribd-Unternehmen logo
1 von 19
HoloLensでも3Dアニメーションを再
生する
松原達郎
松原 達郎 @blkcatman
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
業務系:C#(Unity), Objective-C, JavaScript(node.js), etc
趣味系:C++, Processing, WebAssembly(やりたい)
Oculus, GearVR, Hololens, Tango, ARKit などのAR / VR技術
Shaderもたまに書いています
(現在開発中)StreamingMeshについて
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
>>>
送信側 受信側
リアルタイムに3DCGアニメーションを配信するシステムを開発中
StreamingMesh動作確認状況
• ◯ PC ( Windows / Mac ) ※Linux未確認
• ◯ Android(Galaxy s6やZenFoneAR) , iOS(iPhone)
• ◯ HoloLens ※動作させるの大変でした
• △ WebGL / WebVR ※PCのブラウザのみ、モバイル対応当分先
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
(一般的な)開発用PCとHoloLens性能比較
• 開発用PC
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
CPU
Core-i7 4770K
(Haswell) 3.5 to
3.9 GHz
Memory 8GB
GPU
Nvidia GTX
970 1050 MHz ~
4GB
CPU
Atom x5-Z8100
(Cherry Trail)
1.04 GHz
Memory 2GB
GPU
Intel® HD Graphics 200
MHz ~ 500 MHz?
2GB(shared memory)
• HoloLens
参考資料(CPU)
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
性能差はおよそ1/9(HoloLensはx5-Z8100なのでこの数値より低くなる)
[参照元] https://www.cpubenchmark.net/cpu.php?cpu=Intel+Atom+x5-Z8300+%40+1.44GHz
参考資料(GPU)
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
性能差はおよそ1/20~1/50 (HoloLensはx5-Z8100なのでさらに・・・)
[参照元] https://www.notebookcheck.net/Intel-HD-Graphics-Cherry-Trail-Benchmarks.140902.0.html
https://www.notebookcheck.net/NVIDIA-GeForce-GTX-970.146750.0.html
• GTX970
vs
• Atom x7-Z8700
結論:(Unityの)スキンメッシュアニメーション、
HoloLens上で動かすのは無茶
ところで、スキンメッシュアニメーションとは
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
スキンメッシュ(Skinned Mesh Animations)について
• スケルタルアニメーション、ボーンアニメーションとも
• ツリー構造を持った複数の回転行列による重み付き変換
• 順運動学(Forward Kinematics)の応用がスキンメッシュ
• 順運動学と違うのは、頂点が複数の回転軸の影響を受ける
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
Forward Kinematicsって
こういうやつです
Skinned Meshって
こういうやつです
スキンメッシュの計算量の話
(眠たくなるかもしれません)
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
スキンメッシュの計算量①(ちょっと乱暴)
• ベクトルと3x3の回転行列の乗算+移動ベクトル
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
単一の回転行列による変換
(重み付けなし)
複数の回転行列による変換
(重み付けあり)
(重み付けの制約)
回転行列どうしはツリー構造になっているので、予めFKで計算される
計算回数: 乗算9回 + 加算9回
計算回数: (乗算9回 + 加算9回)x2 + (乗算6回 + 加算3回)
スキンメッシュの計算量②
• スキンメッシュだと大体2つ以上の回転行列の影響を
受けるので、
• 1つの頂点で乗算24回 + 加算21回の浮動小数点計算
• 1000ポリゴンで乗算24,000回 + 加算21,000回
• さらに秒間で考えて、30fpsだとすると…
• 乗算720,000回 + 加算630,000回 (1000verts, 30fps)
• ハイポリゴンになると…
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
※スキンメッシュの計算量最適化の手法はありますが、
原則的にはこういう計算やっています、というお話です
もう一度、HoloLensの性能の話
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
• CPUの性能 = PCに対してだいたい 1/9
• GPUの性能 = PCに対してだいたい 1/20 ~ 1/50
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
スキンメッシュの計算量を1/50以下にすれば
アニメーションがHoloLens上でも動く?
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
StreamingMeshの機能を使ってHoloLens上でアニメーション
• クライアント側は圧縮処理された頂点情報を受信
• 受信した頂点は既にスキンメッシュ変換後の情報
• 圧縮処理された頂点情報から元モデルを復元する
• 解凍(またはデコード)処理はかなり高速
• 秒間10フレームぐらいの間隔の頂点データに間引く←30フレームは重い
• フレーム間のアニメーションは線形補間する
フレームの頂点位置を
線形補間でアニメーション
線形補間(Linear-Interpolation)による頂点処理の計算量
• 時間ごとの頂点の絶対位置は定まっているので、
直線状の動きになる
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
線形補間
(乗算6回 + 加算3回+(減算1回))
もしくは,
,
(wが事前に計算されれば、乗算3回 + 加算3回
.
,
単純計算でスキンメッシュの
1/4~1/8の計算量で済む
その他の最適化
• Unity(C#)のクラス(Vector3等)をなるべく使わない
• Vector3.Lerpは線形補間してくれる関数だけどとても遅い
• 頑張ってfloat[]の配列で計算し、最後にMeshに渡す時だけ
に使う
• GCスパイクが出まくるので、抑制する
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」
魔のunsafeコード(今は使ってないけど、似たようなことはしてる)
おわりに
• 最適化はまだ終わらない (さらに、これからやること)
• (Unityの)C#で限界な部分まで調整していく
• 最終的にはUnityからの出力でなくても動くようにしたい
• 公開はまだ先!
xRLT vol.01 「HoloLensでも3Dアニメーションを再生する 」

Weitere ähnliche Inhalte

Was ist angesagt?

Androidのライブ壁紙について
Androidのライブ壁紙についてAndroidのライブ壁紙について
Androidのライブ壁紙について
yoropan
 

Was ist angesagt? (20)

HoloLens RS4
HoloLens RS4HoloLens RS4
HoloLens RS4
 
HoloLens / Windows MR 開発入門
HoloLens / Windows MR開発入門HoloLens / Windows MR開発入門
HoloLens / Windows MR 開発入門
 
Research modeで取得した深度(Depth)データを可視化する
Research modeで取得した深度(Depth)データを可視化するResearch modeで取得した深度(Depth)データを可視化する
Research modeで取得した深度(Depth)データを可視化する
 
20180414 札幌 Hololens meetup vol.1
20180414 札幌 Hololens meetup vol.120180414 札幌 Hololens meetup vol.1
20180414 札幌 Hololens meetup vol.1
 
HoloLensの魅力とビジネス利用
HoloLensの魅力とビジネス利用HoloLensの魅力とビジネス利用
HoloLensの魅力とビジネス利用
 
TouchDesigner Beginners' Workshop vol.002
TouchDesigner Beginners' Workshop vol.002TouchDesigner Beginners' Workshop vol.002
TouchDesigner Beginners' Workshop vol.002
 
HoloLensハンズオン:Gaze,Tap And Hold編
HoloLensハンズオン:Gaze,Tap And Hold編HoloLensハンズオン:Gaze,Tap And Hold編
HoloLensハンズオン:Gaze,Tap And Hold編
 
TouchDesigenr Beginners' workshop vol.002 2017/07/17
TouchDesigenr Beginners'  workshop vol.002 2017/07/17TouchDesigenr Beginners'  workshop vol.002 2017/07/17
TouchDesigenr Beginners' workshop vol.002 2017/07/17
 
Mixed Reality Toolkit V2開発環境構築(2020/01版)
Mixed Reality Toolkit V2開発環境構築(2020/01版)Mixed Reality Toolkit V2開発環境構築(2020/01版)
Mixed Reality Toolkit V2開発環境構築(2020/01版)
 
HoloLens/Windows Mixed Reality開発環境構築
HoloLens/Windows Mixed Reality開発環境構築HoloLens/Windows Mixed Reality開発環境構築
HoloLens/Windows Mixed Reality開発環境構築
 
ハマる!HoloLensアプリ開発
ハマる!HoloLensアプリ開発ハマる!HoloLensアプリ開発
ハマる!HoloLensアプリ開発
 
Azure 入門 (と言いながらちょまどの好きな Azure サービス紹介)
Azure 入門 (と言いながらちょまどの好きな Azure サービス紹介)Azure 入門 (と言いながらちょまどの好きな Azure サービス紹介)
Azure 入門 (と言いながらちょまどの好きな Azure サービス紹介)
 
Webデザインのウソ・ホント ~ Web らしくデザインするためのヒント
Webデザインのウソ・ホント ~ Web らしくデザインするためのヒントWebデザインのウソ・ホント ~ Web らしくデザインするためのヒント
Webデザインのウソ・ホント ~ Web らしくデザインするためのヒント
 
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
GTMF2012 SpriteStudio と "Unity" と "CoronaSDK" と "ngCore" ! ~組み合わせて改善する 2D ワーク...
 
MRTK-Unreal(UX Tools) を利用した HoloLens 2 アプリ開発 | UNREAL FEST EXTREME 2020 WINTER
MRTK-Unreal(UX Tools) を利用した HoloLens 2 アプリ開発 | UNREAL FEST EXTREME 2020 WINTERMRTK-Unreal(UX Tools) を利用した HoloLens 2 アプリ開発 | UNREAL FEST EXTREME 2020 WINTER
MRTK-Unreal(UX Tools) を利用した HoloLens 2 アプリ開発 | UNREAL FEST EXTREME 2020 WINTER
 
#MRDevDaysJP HoloLens 2 アプリ開発入門
#MRDevDaysJP HoloLens 2 アプリ開発入門#MRDevDaysJP HoloLens 2 アプリ開発入門
#MRDevDaysJP HoloLens 2 アプリ開発入門
 
HoloLensでImage-Based Lightingを試してみた話
HoloLensでImage-Based Lightingを試してみた話HoloLensでImage-Based Lightingを試してみた話
HoloLensでImage-Based Lightingを試してみた話
 
第1回 【初心者向け】Unity+Oculus Riftで次世代の3Dゲームを作って感じるワークショップ
第1回 【初心者向け】Unity+Oculus Riftで次世代の3Dゲームを作って感じるワークショップ第1回 【初心者向け】Unity+Oculus Riftで次世代の3Dゲームを作って感じるワークショップ
第1回 【初心者向け】Unity+Oculus Riftで次世代の3Dゲームを作って感じるワークショップ
 
UnityとOculus Riftでフルダイブなゲームを作ってみた話
UnityとOculus Riftでフルダイブなゲームを作ってみた話UnityとOculus Riftでフルダイブなゲームを作ってみた話
UnityとOculus Riftでフルダイブなゲームを作ってみた話
 
Androidのライブ壁紙について
Androidのライブ壁紙についてAndroidのライブ壁紙について
Androidのライブ壁紙について
 

Ähnlich wie xRLT vol.01 資料「HoloLensでも3Dアニメーションを再生する 」

HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実
Takumi Ohashi
 
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
IGDA Japan
 

Ähnlich wie xRLT vol.01 資料「HoloLensでも3Dアニメーションを再生する 」 (13)

どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
 
HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実
 
WebRTCとHoloLens
WebRTCとHoloLensWebRTCとHoloLens
WebRTCとHoloLens
 
Silverlightの今
Silverlightの今Silverlightの今
Silverlightの今
 
PUN2 × OculusQuest でハンドトラッキング同期実装(プロジェクト公開しました)
PUN2 × OculusQuest でハンドトラッキング同期実装(プロジェクト公開しました)PUN2 × OculusQuest でハンドトラッキング同期実装(プロジェクト公開しました)
PUN2 × OculusQuest でハンドトラッキング同期実装(プロジェクト公開しました)
 
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
改めて注目される2D アニメーションツール SpriteStudio ~国産2Dツールが(舶来ゲームエンジンの力を借りながら)世界へ~
 
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
Xbox LIVEインディーズゲーム「ピアレビュー攻略」のためのXNAにおける開発のコツと特有の課題
 
HTML5で作るスマホブラウザゲーム
HTML5で作るスマホブラウザゲームHTML5で作るスマホブラウザゲーム
HTML5で作るスマホブラウザゲーム
 
インタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlashインタラクティブコンテンツにおけるHTML5とFlash
インタラクティブコンテンツにおけるHTML5とFlash
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
 
StreamingMeshのしくみ(JVRfest 開発者会資料)
StreamingMeshのしくみ(JVRfest 開発者会資料)StreamingMeshのしくみ(JVRfest 開発者会資料)
StreamingMeshのしくみ(JVRfest 開発者会資料)
 
Mixed Reality ToolkitでHoloとImmersiveまとめて開発
Mixed Reality ToolkitでHoloとImmersiveまとめて開発Mixed Reality ToolkitでHoloとImmersiveまとめて開発
Mixed Reality ToolkitでHoloとImmersiveまとめて開発
 
スマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブルスマートフォン対応、気をつけたいトラブル
スマートフォン対応、気をつけたいトラブル
 

xRLT vol.01 資料「HoloLensでも3Dアニメーションを再生する 」