gcs2012 nadec: webgl+gwtでミクさんを裸眼立体視してみた

11
@yacchin1205 Satoshi Yazawa/やっちん

Upload: satoshi-yazawa

Post on 03-Jul-2015

1.631 views

Category:

Documents


1 download

DESCRIPTION

GCS2012でLTしたスライドです。いろいろ制限つきですけどURLとかたたいてもらえるとありがたいです。(基本Chromeのみですー)

TRANSCRIPT

Page 1: GCS2012 NADEC: WebGL+GWTでミクさんを裸眼立体視してみた

@yacchin1205

Satoshi Yazawa/やっちん

Page 2: GCS2012 NADEC: WebGL+GWTでミクさんを裸眼立体視してみた

学生時代:ブラウザゲーム開発のアルバイト

起業に参加:次世代DVD的な開発

Blu-rayに敗戦するわリーマンショックだわ◦ 関係者のみなさまには毎度ご迷惑をおかけしております

現在、流浪の民◦ Android本の翻訳のお手伝いなどさせていただいたり

◦ 研究開発的なシステム開発させていただいたり

◦ 高専・専門学校で非常勤講師をさせていただいたり

◦ 最近 @mnagaku さんの下でNIIでしごとちゅう

Page 3: GCS2012 NADEC: WebGL+GWTでミクさんを裸眼立体視してみた

裸眼立体視が趣味◦ どうやら人間は2次元にいけないらしい→2次元が3次元にこい

Page 4: GCS2012 NADEC: WebGL+GWTでミクさんを裸眼立体視してみた

コンテンツがとにかく少ない◦ 出力形式が異なる / プラットフォームが異なる◦ 機器によって視差のつけ方を調整したかったり

ネタストック◦ ARgil: C++で簡単なMMDのエンジンを書いてみて遊んだり◦ GWT(Google Web Toolkit): Javaだけでサーバ、クライアントコードを書くお仕事したり

SDK依存度が低い小さなJava MMDエンジン書けば幸せになれそう◦ WebGL勉強すればブラウザでお手軽MMD立体視ビューア◦ OpenGL ES勉強すればEVO 3Dみたいな変態端末でも幸せに

Page 5: GCS2012 NADEC: WebGL+GWTでミクさんを裸眼立体視してみた

GWT(Google Web Toolkit)◦ JavaをJavaScriptにコンパイルしてくれる超技術◦ native宣言してアレコレしてあげると直接JavaScriptも書ける

制約◦ 入出力系は無理 java.io, java.nioとか無理

バイト配列は扱えるけど、文字コードの解釈は無理

◦ Reflection系も無理 Object.clone()も無理

Class.newInstance()も無理

バイトコード操作なんて論外

◦ javax.vecmathもまあ無理

Page 6: GCS2012 NADEC: WebGL+GWTでミクさんを裸眼立体視してみた

MMDエンジン◦ ARgilのコード: PMDEditorなどを参考にさせていただいたり◦ ひたすらC++コード→Javaコードへの変換をする苦行◦ 依存部分の切り離し I/O, OpenGL部分はインタフェース化してプラットフォームごとに実装

◦ チューニング JavaはGCがつらい。できるだけnewの回数を減らすように工夫

物理エンジン: JBullet◦ javax.vecmath … Object.clone()とかやってる◦ Stack … バイトコード処理で高速化している・・・◦ newInstanceとかも意外とやってる

Page 7: GCS2012 NADEC: WebGL+GWTでミクさんを裸眼立体視してみた

とりあえずブラウザ / Androidでなんか動くようになったのでデモ◦ モデルデータは初音ミクDIVAっぽいどモデル(ままま様), あずにゃん(かこみき様), モーションデータはMotionDataBaseVer0.02(Q氏様) http://3xma.blog49.fc2.com/

http://kakomiki.blog16.fc2.com/blog-entry-259.html

http://www.nicovideo.jp/watch/sm10001743

MMDデモ(モデル対応はまだまだだけど)◦ http://gwtmmd.appspot.com/

JBullet on GWTデモ◦ http://gwtmmd.appspot.com/?bullet=true

Page 8: GCS2012 NADEC: WebGL+GWTでミクさんを裸眼立体視してみた

RockVision 3D◦ 左右のピクセルを交互に

EVO 3D◦ ビューポートを横2分割して左右の絵を描く

Page 9: GCS2012 NADEC: WebGL+GWTでミクさんを裸眼立体視してみた

立体視を趣味にする者がいつもぶちあたる壁

やってること◦ 2枚の左右視点をずらした3DなCanvasからArrayを抜き出す

◦ 2DなCanvasに左右交互に書き出す

◦ 位置合わせ不要にするためにFullscreen APIを使う

RockVision 3Dはもっと評価されてもいいと思ってる◦ 欠点もいろいろあるけど

Page 10: GCS2012 NADEC: WebGL+GWTでミクさんを裸眼立体視してみた

非力なノートでも、まあそこそこの速度で・・・?◦ 現状でもゲーム用デスクトップPCだと1フレーム描くのに30msくらいでいけたりする

◦ GCの負荷が高いようで、newの回数を減らすとかなり性能向上するみたい

最初の読み込みが遅い◦ 頂点データを全部GWTの仕掛け上でシリアライズしている◦ XHRのArray転送を使えばたぶんマシになる

GWTで動くものを作っておくと、そこそこ他のところに移植できるのでたのしい◦ 意外と高速?

Page 11: GCS2012 NADEC: WebGL+GWTでミクさんを裸眼立体視してみた

半額だし!!!◦ Windows Vista/7のことしか書いてない: DisplayLinkのドライバを入れればWinXP, Mac OSでもイケる

作り途中を随時アップしていきます(今のところChromeだけ)◦ http://gwtmmd.appspot.com/mmd_gwt_rv3d.html

RockVision3D向け描画