Upload
Download free for 30 days
Login
Submit Search
three.jsを「遅い」と思わせないデータの扱い方
Download as PPTX, PDF
4 likes
6,576 views
J
jey en
three.jsでゲームを作ろうor公開しようと思った時、モデルロード時に固まるときの解決方法のような何か。
Education
Read more
1 of 37
Download now
Download to read offline
1
2
3
4
5
Most read
6
7
8
9
10
11
12
13
14
15
Most read
16
17
18
Most read
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
More Related Content
PDF
【DL輪読会】Novel View Synthesis with Diffusion Models
Deep Learning JP
PPTX
(2017.6.9) Neo4jの可視化ライブラリまとめ
Mitsutoshi Kiuchi
PPTX
20160526 依存関係逆転の原則
bonjin6770 Kurosawa
PDF
MLflowによる機械学習モデルのライフサイクルの管理
Takeshi Yamamuro
PDF
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜
SSII
PDF
数式を使わずイメージで理解するEMアルゴリズム
裕樹 奥田
PPTX
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
PDF
(今ちゃんと振り返る) ゴール指向要求分析 入門
Fuyuki Ishikawa
【DL輪読会】Novel View Synthesis with Diffusion Models
Deep Learning JP
(2017.6.9) Neo4jの可視化ライブラリまとめ
Mitsutoshi Kiuchi
20160526 依存関係逆転の原則
bonjin6770 Kurosawa
MLflowによる機械学習モデルのライフサイクルの管理
Takeshi Yamamuro
SSII2022 [SS1] ニューラル3D表現の最新動向〜 ニューラルネットでなんでも表せる?? 〜
SSII
数式を使わずイメージで理解するEMアルゴリズム
裕樹 奥田
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
(今ちゃんと振り返る) ゴール指向要求分析 入門
Fuyuki Ishikawa
What's hot
(20)
PPTX
Soft Rasterizer: A Differentiable Renderer for Image-based 3D Reasoning
Kohei Nishimura
PDF
三次元表現まとめ(深層学習を中心に)
Tomohiro Motoda
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
PDF
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
PDF
【DL輪読会】GradMax: Growing Neural Networks using Gradient Information
Deep Learning JP
PDF
[DL輪読会]ICLR2020の分布外検知速報
Deep Learning JP
PDF
三次元点群を取り扱うニューラルネットワークのサーベイ
Naoya Chiba
PDF
ガイデットフィルタとその周辺
Norishige Fukushima
PDF
中級グラフィックス入門~シャドウマッピング総まとめ~
ProjectAsura
PDF
【DL輪読会】Bridge-Prompt: Toward Ordinal Action Understanding in Instructional Vi...
Deep Learning JP
DOCX
マハラノビス距離とユークリッド距離の違い
wada, kazumi
PDF
【DL輪読会】Hierarchical Text-Conditional Image Generation with CLIP Latents
Deep Learning JP
PDF
Neural scene representation and rendering の解説(第3回3D勉強会@関東)
Masaya Kaneko
PPTX
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Yusuke Uchida
PDF
グラフデータ分析 入門編
順也 山口
PDF
Union find(素集合データ構造)
AtCoder Inc.
PDF
ドメイン駆動設計の正しい歩き方
増田 亨
PDF
Unityでオニオンアーキテクチャ
torisoup
PDF
Convolutional Neural Networks のトレンド @WBAFLカジュアルトーク#2
Daiki Shimada
PDF
【DL輪読会】Segment Anything
Deep Learning JP
Soft Rasterizer: A Differentiable Renderer for Image-based 3D Reasoning
Kohei Nishimura
三次元表現まとめ(深層学習を中心に)
Tomohiro Motoda
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
【DL輪読会】GradMax: Growing Neural Networks using Gradient Information
Deep Learning JP
[DL輪読会]ICLR2020の分布外検知速報
Deep Learning JP
三次元点群を取り扱うニューラルネットワークのサーベイ
Naoya Chiba
ガイデットフィルタとその周辺
Norishige Fukushima
中級グラフィックス入門~シャドウマッピング総まとめ~
ProjectAsura
【DL輪読会】Bridge-Prompt: Toward Ordinal Action Understanding in Instructional Vi...
Deep Learning JP
マハラノビス距離とユークリッド距離の違い
wada, kazumi
【DL輪読会】Hierarchical Text-Conditional Image Generation with CLIP Latents
Deep Learning JP
Neural scene representation and rendering の解説(第3回3D勉強会@関東)
Masaya Kaneko
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Yusuke Uchida
グラフデータ分析 入門編
順也 山口
Union find(素集合データ構造)
AtCoder Inc.
ドメイン駆動設計の正しい歩き方
増田 亨
Unityでオニオンアーキテクチャ
torisoup
Convolutional Neural Networks のトレンド @WBAFLカジュアルトーク#2
Daiki Shimada
【DL輪読会】Segment Anything
Deep Learning JP
Ad
Viewers also liked
(16)
PDF
海外で注目されてるJs framework “mithril”の特徴
Shoyo Kyou
PPTX
Web Workers
kaboccha
PDF
OSC京都 2015 LT 「テスト自動化の闇と向き合う」
Osamu Shimoda
PDF
Onsen UI 2.0とUIライブラリの未来
アシアル株式会社
PDF
20151201 私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全て
Osamu Shimoda
PDF
第2回html5jゲーム部勉強会 Oh! JavaScript 夢の続きを語ろうよ〜emscriptenの逆襲 - html5編
Takashi Toyoshima
PDF
意識低くMeteor紹介
hashedrock
PDF
軽量フレームワークNancy
Narami Kiyokura
PDF
私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全て
Osamu Shimoda
PDF
Riot + generator で始める新しいデータバインディング
Tsutomu Kawamura
PPTX
Web Workerで○○する話
ushiboy
PPTX
ライオンでも分かるVuejs
lion-man
PDF
Vue.js入門
Takuya Sato
PDF
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo!デベロッパーネットワーク
PDF
最近のストリーム処理事情振り返り
Sotaro Kimura
PDF
サイボウズのフロントエンド開発 現在とこれからの挑戦
Teppei Sato
海外で注目されてるJs framework “mithril”の特徴
Shoyo Kyou
Web Workers
kaboccha
OSC京都 2015 LT 「テスト自動化の闇と向き合う」
Osamu Shimoda
Onsen UI 2.0とUIライブラリの未来
アシアル株式会社
20151201 私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全て
Osamu Shimoda
第2回html5jゲーム部勉強会 Oh! JavaScript 夢の続きを語ろうよ〜emscriptenの逆襲 - html5編
Takashi Toyoshima
意識低くMeteor紹介
hashedrock
軽量フレームワークNancy
Narami Kiyokura
私がSeleniumを使ってスクリーンショットを撮るまでに出会った闇の全て
Osamu Shimoda
Riot + generator で始める新しいデータバインディング
Tsutomu Kawamura
Web Workerで○○する話
ushiboy
ライオンでも分かるVuejs
lion-man
Vue.js入門
Takuya Sato
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo!デベロッパーネットワーク
最近のストリーム処理事情振り返り
Sotaro Kimura
サイボウズのフロントエンド開発 現在とこれからの挑戦
Teppei Sato
Ad
Recently uploaded
(17)
PDF
9_前田音葉さん:「Yakushima Islandってなんか変じゃない?」.pdf
ssuser3fcec0
PDF
My Inspire High Award 2024(岡田秀幸).pptx.pdf
ssuser3fcec0
PDF
14_「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」公文国際学園高等部古澤琴子.pdf
ssuser3fcec0
PPTX
PPT KANJI IRODORI SHOKYUU 1 BAB 9 (FURIGANA)
hayyinfatika
PDF
12_星の杜中学校小倉ももこ『家族ってなに』inspirehigh発表物.pdf
ssuser3fcec0
PDF
8_「世の中の流行はどのようにして生まれるのか」学校法人聖ドミニコ学園竹野はるいpptx.pdf
ssuser3fcec0
PDF
11_「なぜ議会への関心が低いのか?」長野県長野西高等学校 片桐 菜々美さん.pdf
ssuser3fcec0
PDF
「なぜ、好きなことにいつかは飽きるの?」大塚莉子 - My Inspire High Award 2024.pdf
ssuser3fcec0
PDF
外国人が日本のテーブルマナーに驚く理由は?_公文国際学園高等部 角田 恵梨佳さん
ssuser3fcec0
PDF
共同売店から考える沖縄の新しい流通のしくみ2025琉球大学流通原論講義資料.pdf
Kyodo-Baiten Fanclub 共同売店ファンクラブ
PDF
12_「家族とは何か」星の杜中学校小倉ももこ『家族ってなに』inspirehigh.pdf
ssuser3fcec0
PDF
7_「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」明治大学付属中野八王子中学校宮本ゆりかさん.pdf
ssuser3fcec0
PDF
6_「老いることは不幸なこと?」植草学園大学附属高等学校森 珠貴さんinspirehigh.pdf
ssuser3fcec0
PDF
5_「AIと仲良くなるには?」日本大学東北高等学校南梨夢乃さんinspirehigh.pdf
ssuser3fcec0
PDF
13_「他者と自分、対立を防ぐには?」市原中央高等学校 大野リリinspirehigh.pdf
ssuser3fcec0
PDF
10_「孤独は敵なのか?」 桜花学園高等学校堀川愛可さんinspirehigh.pdf
ssuser3fcec0
PDF
3_「本当の『悪者』って何?」鷗友学園女子中学校_福島 雪乃さんinspirehigh.pdf
ssuser3fcec0
9_前田音葉さん:「Yakushima Islandってなんか変じゃない?」.pdf
ssuser3fcec0
My Inspire High Award 2024(岡田秀幸).pptx.pdf
ssuser3fcec0
14_「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」公文国際学園高等部古澤琴子.pdf
ssuser3fcec0
PPT KANJI IRODORI SHOKYUU 1 BAB 9 (FURIGANA)
hayyinfatika
12_星の杜中学校小倉ももこ『家族ってなに』inspirehigh発表物.pdf
ssuser3fcec0
8_「世の中の流行はどのようにして生まれるのか」学校法人聖ドミニコ学園竹野はるいpptx.pdf
ssuser3fcec0
11_「なぜ議会への関心が低いのか?」長野県長野西高等学校 片桐 菜々美さん.pdf
ssuser3fcec0
「なぜ、好きなことにいつかは飽きるの?」大塚莉子 - My Inspire High Award 2024.pdf
ssuser3fcec0
外国人が日本のテーブルマナーに驚く理由は?_公文国際学園高等部 角田 恵梨佳さん
ssuser3fcec0
共同売店から考える沖縄の新しい流通のしくみ2025琉球大学流通原論講義資料.pdf
Kyodo-Baiten Fanclub 共同売店ファンクラブ
12_「家族とは何か」星の杜中学校小倉ももこ『家族ってなに』inspirehigh.pdf
ssuser3fcec0
7_「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」明治大学付属中野八王子中学校宮本ゆりかさん.pdf
ssuser3fcec0
6_「老いることは不幸なこと?」植草学園大学附属高等学校森 珠貴さんinspirehigh.pdf
ssuser3fcec0
5_「AIと仲良くなるには?」日本大学東北高等学校南梨夢乃さんinspirehigh.pdf
ssuser3fcec0
13_「他者と自分、対立を防ぐには?」市原中央高等学校 大野リリinspirehigh.pdf
ssuser3fcec0
10_「孤独は敵なのか?」 桜花学園高等学校堀川愛可さんinspirehigh.pdf
ssuser3fcec0
3_「本当の『悪者』って何?」鷗友学園女子中学校_福島 雪乃さんinspirehigh.pdf
ssuser3fcec0
three.jsを「遅い」と思わせないデータの扱い方
1.
何が?
2.
まじかよ
3.
three.jsを「遅い」と思わせ ないデータの扱い方 2017/2/15 jey-en
4.
何作ったのさ Three.jsというモノを使い、 Xbox360で配信していた 3D同人ゲームの 移植を行った (1面のみの、おためし版) はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード
5.
もくじのようなもの はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード
6.
three.jsって? オープンソースの、100%JavaScriptで作られた、 3D(WebGL)を扱いやすくするためのJSライブラリ。 https://threejs.org/ はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード
7.
ココがイイぞ!three.jsでゲーム制作 ゲーム作成に必要なモノは揃ってる。 アタリ判定、モデルとRayとの交点(高さ検出)、3D&2Dベクトル型、Matrix型、 ボーン、クォータニオン、3D座標からスクリーン座標&その逆などなど、 DirectXを触ったことがある人なら,ごくごくすんなりと開発できるはず。 ゼロからの人は、まぁ、頑張れ。いつか日の光は見える。 はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード
8.
ココがイイぞ!three.jsでゲーム制作 豊富なインポータ。 json(blender)、FBX、obj、なんとMMDも対応している。 MMDはモデル&アニメーションだけでなく、 頂点モーフまで対応。 あんなモデルが即ブラウザで表示できて動く! はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード
9.
ココがイイぞ!three.jsでゲーム制作 遅くない。っていうか早い。 そして出来ることが多い 幾つかある3Dラッパーの中では最速。らしい。 シェーダーもぶっ叩ける。触れば触るほど やれることが増えていく。楽しい! はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード
10.
ここからが本題です。 配信直前で泣かない ためのお話をしましょう
11.
すこし先の話をしよう。 ゲームが完成した! スペース借りて、公開だ!
12.
「すごーい!君は ブラウザで動く3Dゲームが作れる フレンズなんだね!」
13.
ちくしょう!台無しにしやがった!!
14.
誰もお前を愛さない
15.
シングルスレッドの限界に挑むデータロード おさらい: JavaScriptは、シングルスレッドである。 WebWorker?とりあえず忘れろ。 はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード
16.
シングルスレッドの限界に挑むデータロード three.jsの、モデルデータの読み込みについてのフロー ダウンロード完了後に、 「ローダープラグインが、モデルデータをthree.js用に変換する」 その後、メインプログラム側のコールバックにした「Load」に入る。 はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード データ ダウンロード ローダーでの解析・変換
ロード後コールバック ローダーライブラ リ ユーザーコード
17.
three.jsの、モデルデータの読み込みについてのフロー ヤバイのは実は、「ダウンロードの時間」ではなく、 「ローダーでの解析時間」 と 「コールバック時処理」
のあわせ技!! はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード データ ダウンロード ローダーでの解析 ロード後コールバック マルチ可能 マルチ不可能!!! シングルスレッドの限界に挑むデータロード
18.
three.jsの、複数モデルデータの読み込みについてのフロー ヤバイのは実は、「ダウンロードの時間」ではなく、その後の時間! DL ローダーでの解析 ロード後コード DL DL DL ローダーでの解析
ロード後コード 画面更新可能 画面更新不可能画面更新不可能
19.
誰もお前を愛さない
20.
じゃあどうしよう。 魔法の呪文を唱えましょう。 はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード シングルスレッドの限界に挑むデータロード
21.
大正義 はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード シングルスレッドの限界に挑むデータロード
22.
three.jsの、モデルデータの読み込みについてのフロー 第一の改善点 一番楽に済む改修点がコレ。 はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード データ ダウンロード ローダーでの解析 ロード後コー ド ここにSetTimeOut シングルスレッドの限界に挑むデータロード
23.
three.jsの、モデルデータの読み込みコード第一の改善 コレを・・ はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード loader.load(
modelFile, function ( object ) { mesh = object; mesh.position.y = -10; scene.add( mesh ); //中略 }, onProgress, onError ); シングルスレッドの限界に挑むデータロード
24.
three.jsの、モデルデータの読み込みコード第一の改善 こうじゃ。 はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード loader.load(
modelFile, function ( object ) { var loadEnd = function (_object) { mesh = (_object; mesh.position.y = -10; scene.add( mesh ); //中略 }; setTimeout(loadEnd(object), 10); }, onProgress, onError ); シングルスレッドの限界に挑むデータロード
25.
three.jsの、複数モデルデータの読み込みについてのフロー 現在のフローがこんな感じ DL ローダーでの解析 ロード後コード DL DL DL ローダーでの解析
ロード後コード 画面更新が可能になった!
26.
three.jsの、複数モデルデータの読み込みについてのフロー 次の問題はこの「1つのまとまりの大きさ」が、まだ大きい・・・・。 DL ローダーでの解析 ロード後コード DL DL DL ローダーでの解析
ロード後コード 2.5~3秒 0.3秒
27.
大正義 はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード シングルスレッドの限界に挑むデータロード
28.
three.jsの、モデルデータの読み込みコード第一の改善 オープンソースの醍醐味を活かそう。 ローダーを独自改修し、SetTimeOutを仕込む! はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード シングルスレッドの限界に挑むデータロード
29.
MMDLoader.jsの、モデルデータの読み込みコードの魔改造 コレを・・ //83行目(ビルド後ファイル・ver r84時点) THREE.MMDLoader.prototype.load =
function ( modelUrl, vmdUrls, callback, onProgress, onError ) { var scope = this; this.loadModel( modelUrl, function ( mesh ) { scope.loadVmds( vmdUrls, function ( vmd ) { scope.pourVmdIntoModel( mesh, vmd ); callback( mesh ); }, onProgress, onError ); }, onProgress, onError ); }; シングルスレッドの限界に挑むデータロード
30.
MMDLoader.jsの、モデルデータの読み込みコードの魔改造 こうじゃ //83行目(ver r84時点) THREE.MMDLoader.prototype.load =
function ( modelUrl, vmdUrls, callback, onProgress, onError ) { var scope = this; this.loadModel( modelUrl, function ( mesh ) { var modeLoadEnd= function (_mesh) { scope.loadVmds( vmdUrls, function ( vmd ) { scope.pourVmdIntoModel( _mesh, vmd ); callback(_mesh ); }, onProgress, onError ); }; setTimeout(modeLoadEnd( mesh ), 10); }, onProgress, onError ); }; シングルスレッドの限界に挑むデータロード
31.
three.jsの、複数モデルデータの読み込みについてのフロー トータルの読み込み時間は変わらないが、間に画面更新が可能になった! DL ローダーでの解析 ロード後コード DL DL DL ロード後コード 2.5~3秒
0.3秒 ローダーでの解析
32.
大正義 はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード シングルスレッドの限界に挑むデータロード
33.
JunkFieldsでのデータの読み込みについてのフロー メッシュ地形DL 本地形データDL 主人公メカデータDL ボイスデータDL 敵メカデータDL 敵メカデータDL 本編ボイスデータDL タダの暗闇 (長くて0.5秒) 戦闘説明デモ画面(全部見ると1分近い) 戦 闘 本 編 本 編 初 期 化 シナリオスクリプトDL
34.
ココはイケてない。three.jsでゲーム制作 Unityの強力なアセットストアが使えない。 リソースは全て自前で用意する必要がある。 ストア以外でもUnity限定配信とかのフリーモデルとかある。 過剰なUnity信仰文化氏ね。 はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード
35.
ココはイケてない。three.jsでゲーム制作 ガチで3Dゲームを作りたいなら、 おとなしくUnityにしとけ! ソース丸見えチートし放題問題&アセットストアの有用性で、 Unityのメリットが上回ると思う(個人の感想です)。 企業ユースのゲームとしては、three.jsはやっぱりキツイと思う。 three.jsでゲーム作成」というノウハウは少なく、デビュー作にはVeryHard はじめに three.js って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード
36.
今回の話と関係のない結論 ●ガチじゃない、さくっと3Dゲームを作って公開したい! ということに関しては、three.js は選択肢の一つとして十分オススメ出来る! ●本業がゲーム畑にいない人&元同人ゲーム作者にこそ、 覚えていただきたい選択肢! ●ゲーム以外で3Dの表現を使いたいなら、three.js最高!! はじめに three.js
って何さ ココがイイぞ! three.jsでゲーム制作 ココがイケてない。 three.jsでゲーム制作 その他 悪あがき シングルスレッドの限界に挑むデータロード
37.
おわり ありがとうございました。お疲れ様でした。 three.jsが気になったひとは、ぜひ three.js ぱんつ 検索
Editor's Notes
#2:
えーみなさま、はじめましてでございます。
#3:
大したことは言いません。どうぞご歓談メインで、聞き流していただければと思います。 そのかわりウルサクさせていただきます。 ということでライトニングトークのお題です。
#4:
スリーJSを「遅い」と思わせないデータの扱い方 ということで、お話させていただきたいと思います。よろしくお願いします。 -- 30s
#5:
今さらお前は誰だ、ということでですね、申し遅れました。私、タムラと申します。スリーJSで、個人制作でゲームなんて作ってみました。個人制作です。ゲーム作りをプロでやってるわけじゃありません、大したお話はできません。 チョット時間が5分からはみ出ちゃうと思うんですけど、ちらっとどんなゲームか、30秒ほど動画でおみせします。 このゲーム、お世辞ではなく、Edgeが一番早いです。 はい、お粗末様でした。
#6:
本日の流れ。どうでもいいですね。多分この通りに喋りません。時間使っちゃったし。 1m
#7:
えーそもそもスリーJsってなんぞや、ということなんですが、JavaScriptの3Dプログラム向けのライブラリです。さきほど豊島さんがスリーJsって言ってたのでちょっと安心しました。知名度ちゃんとありますね。 WebGLをラッピングして、使いやすくしてくれたものです。もちろんオープンソースです。すげえ!
#8:
この辺は流しますね。 えー大体あります。ゲーム向けメソッド多いです。素敵!はい次。
#9:
インポータも結構そろってます。MMD、動かせます。楽しいです。
#10:
だいたいこんなかんじです。すりーJSなんて初めて聞いたし、細かく知りたーい、と思ってくださったら、ググってみてください。 はい。 1m15s
#11:
今日はですね、完成直前とか、配信を意識するとか、そういう最後の段階で詰まったときの、解決につながる、かもしれないお話をさせていただきます。 先ほどカシマさんからも、ブラウザゲーム復興だーなんてありましたが、そんなリリース前のお話です。
#12:
すりーJSで根性だして、3Dゲームを完成させました! すごい!やりきった! サーバースペースを用意して、アップロードして公開するとしましょう。
#13:
もーね、きっと明日の朝には、すごーい、たーのしー!のコメントでいっぱいだ!!ワクワクしますね。 って思うと、
#14:
大体の場合、こうなるんですね。 あーあ。コレダメなやつだ。かーらーの
#15:
こうなるんですね。 何がいけなかったのでしょう? 1m45
#16:
いまさらな話をさせていただきます。JavaScriptは、シングルスレッドです。何を今更です。みんな知ってるだろうと。 2m
#17:
こちらに、3Dモデルデータを、ダウンロードして使えるようにするまでフローを書いてみました。 ご覧の通り、ダウンロードの後に、まずは 「 ローダー側での処理 」がありまして、 すりーJS用に頂点データとか何やらを変換します。 みんな書くのは最後のコールバックのところだけ。 でも、その前にも動いてる処理がある、そのことをちょっと思い出しましょう。 2m30s
#18:
そうなんです。2D画像やオーディオと違って、ダウンロード即実行可能、じゃなくて、間に一発いるんですね。 この解析部分、当然、タダのJavaScriptなんで、ふつーにシングルスレッドで走ります。 さぁ、もう嫌な予感がしてきましたね。
#19:
これが複数ファイルだと、こうなります。ダウンロードは確かに時間のかかる処理かもしれないですが、ダウンロードは別スレッドですので、その間、画面を止めないのは、実はそれほど難しくない。 スピナーでもくるくる回しとけばいいんです。 ヤバイのはその後。 ここで、この1組の処理が終わるまで、画面の更新が一切行われなくなります。でもって、その次のファイルも同じように、長く止まっちゃうと。 もーヤバイです。スピナー君もこの最中は、回ってくれません。
#20:
んで、こうなります。 秒間1フレームという地獄のできあがりです。 2m30
#21:
じゃあどうしましょうってことで、魔法の呪文を唱えましょう。 みんな知ってるあの呪文です。 せーの!
#22:
SetTimeOut!みんな大好き。最強です。今回もなんとかしてもらいましょう。
#23:
ということで、解析が終わったところの、ロード後のコードのところで、SetTimeOutをはさみます。
#24:
元がコレですね。っていうかスライドのソースの字なんて見えませんね。ざっくりいきます。予想できると思いますけど、 コレを、
#25:
こんな感じ。setTimeout の呼び出しを付けるだけ。これだけで、結構なんとかなります。
#26:
この回収で、タイムライン的にはこんな感じになります。SetTimeOutのおかげで、画面更新のタイミングができます。 ぶっちゃけローポリで、アニメーションが長くないキャラだったら、これでなんとかなることも多いです。だがまだ足りないこともあると。
#27:
これがデカイデータだとどうなるか。 自分のゲームのデータで3000頂点、5000フレームかな、ですと、解析時間だけで3秒。 画面ごと固まってるってのは、やっぱりキッツイですよね。まだなんとかしたい。なんとかできないだろうか。
#28:
お前の力は、こんなもんじゃないだろと。まだいけます。なんとかしてもらいましょう。
#29:
こっから先は、ソースをいじくるのが、ちょっと疲れます。必要ならば、やってみる感じです。 オープンソースって事を活かしましょう。フォークしても、ビルドしたやつをいじっても、どっちでもいいんじゃないですか。
#30:
例のMMDローダーを試しにいじってみることにしましょう。 元がコレですね。見えませんね。 まぁ続けますけど、見た感じ、二つの処理が繋がってるぞと。コレを、
#31:
こうするわけですね。やったことは、さっきと同じです。 処理の区切りを意識して、見つけて、そこにSetTimeOutを仕込んでいく、それだけです。
#32:
こうすることで、当然、トータルの読み込み時間は減りませんが、間に画面が更新できるタイミングが生まれます。 これを必要な負荷に応じて分割を増やすことで、止まったような画面を見なくて済む、かもしれません。頑張れば!
#33:
ありがとうSetTimeout。今回も世界は救われた。君のことは忘れない!
#34:
というわけで時間ないんですけど、自分のゲームのロード部分の図解です。 小刻みにいろいろなファイルが読まれていって、間あいだで画面の更新ができてます。ありがとうSetTimeOut! はい! --------- 最後に、自分が作ったゲームでの、データのロードの図解っぽいやつです。 (1分以上余ってた場合のみ全部言う) 最初に、ワイヤーフレームで表示する用の軽いモデルデータのダウンロードが走りまして、そのモデルのダウンロードと読み込みが終わると、いわゆる戦闘説明画面っぽいデモが入ります。そのデモ画面の最中、裏ではガリガリとダウンロードとダウンロード後の解析をやるわけですが、こんな感じでSetTimeOutを使って、それぞれが小刻みに読まれていく感じなんですね。んで、全部終わった所で本編突入です。これで、いわゆる「止まらないけど後ろではロードしてるんだぞ」という画面が可能になりました。何かの参考になれば幸いです。
#35:
ちょっとお時間が余ってますので、 順番が前後しましたが、すりーじぇいえすの欠点といいますかなんといいますか、無理矢理な話しですけども。余談を話します。 unityのアセットストアが使えないので、データの用意に苦労することになるんですね。 3Dのデータって作れる人は2Dに比べたら一気に少なくなりますから、そこをカバーできるアセットストアは、ホント凄いと思います。リソースの自前は、おもったよりもキツイです。 まぁこれはあくまでUnityと比べたら、ということで。unity以外の環境からしたら、別に劣ってるということじゃないです。Unityがスゴすぎるだけ。 でも、 今日見せてだいたプレイカンバスは楽しそうだったので、 もし次、こういう機会があれば、プレイカンバスとの比較も用意してみたいなと思います。
#36:
ということで、まとまらないまとめなんですけれども、 Unityでよくね、以上ですって、話が終わっちゃうので。ブラウザで公開したい!という特殊な事情がない限りは、別にthree.jsにこだわることって無いと思います。とにかく、3Dモデルデータが用意できるかどうか、まず最初の分かれ目はそこですね。
#37:
--- 残り15s ------------ ということで、なんか今日話したことと全然関係ないまとめのようなんですけど、先ほどですね、オガワさんからWebGLでゲームはお金にはならんという泣ける結論がありましたけども、もしゲームを個人で作ってる人とかいらっしゃたら、three.jsは、ぜひやってみろと!面白いぞ!と、おすすめしたいと思います。
#38:
ということで、おつきあいいただきまして、ありがとうございました。 すりーJSが気になった方はですね、ぜひとも画面に出てる、どーしょもないキーワードとかでググっていただいて、少しでも興味をもって頂けたら幸いです。 ということで、以上になります。 ありがとうございました。
Download