gcs2012 nadec: webgl+gwtでミクさんを裸眼立体視してみた
DESCRIPTION
GCS2012でLTしたスライドです。いろいろ制限つきですけどURLとかたたいてもらえるとありがたいです。(基本Chromeのみですー)TRANSCRIPT
@yacchin1205
Satoshi Yazawa/やっちん
学生時代:ブラウザゲーム開発のアルバイト
起業に参加:次世代DVD的な開発
Blu-rayに敗戦するわリーマンショックだわ◦ 関係者のみなさまには毎度ご迷惑をおかけしております
現在、流浪の民◦ Android本の翻訳のお手伝いなどさせていただいたり
◦ 研究開発的なシステム開発させていただいたり
◦ 高専・専門学校で非常勤講師をさせていただいたり
◦ 最近 @mnagaku さんの下でNIIでしごとちゅう
裸眼立体視が趣味◦ どうやら人間は2次元にいけないらしい→2次元が3次元にこい
コンテンツがとにかく少ない◦ 出力形式が異なる / プラットフォームが異なる◦ 機器によって視差のつけ方を調整したかったり
ネタストック◦ ARgil: C++で簡単なMMDのエンジンを書いてみて遊んだり◦ GWT(Google Web Toolkit): Javaだけでサーバ、クライアントコードを書くお仕事したり
SDK依存度が低い小さなJava MMDエンジン書けば幸せになれそう◦ WebGL勉強すればブラウザでお手軽MMD立体視ビューア◦ OpenGL ES勉強すればEVO 3Dみたいな変態端末でも幸せに
GWT(Google Web Toolkit)◦ JavaをJavaScriptにコンパイルしてくれる超技術◦ native宣言してアレコレしてあげると直接JavaScriptも書ける
制約◦ 入出力系は無理 java.io, java.nioとか無理
バイト配列は扱えるけど、文字コードの解釈は無理
◦ Reflection系も無理 Object.clone()も無理
Class.newInstance()も無理
バイトコード操作なんて論外
◦ javax.vecmathもまあ無理
MMDエンジン◦ ARgilのコード: PMDEditorなどを参考にさせていただいたり◦ ひたすらC++コード→Javaコードへの変換をする苦行◦ 依存部分の切り離し I/O, OpenGL部分はインタフェース化してプラットフォームごとに実装
◦ チューニング JavaはGCがつらい。できるだけnewの回数を減らすように工夫
物理エンジン: JBullet◦ javax.vecmath … Object.clone()とかやってる◦ Stack … バイトコード処理で高速化している・・・◦ newInstanceとかも意外とやってる
とりあえずブラウザ / 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
RockVision 3D◦ 左右のピクセルを交互に
EVO 3D◦ ビューポートを横2分割して左右の絵を描く
立体視を趣味にする者がいつもぶちあたる壁
やってること◦ 2枚の左右視点をずらした3DなCanvasからArrayを抜き出す
◦ 2DなCanvasに左右交互に書き出す
◦ 位置合わせ不要にするためにFullscreen APIを使う
RockVision 3Dはもっと評価されてもいいと思ってる◦ 欠点もいろいろあるけど
非力なノートでも、まあそこそこの速度で・・・?◦ 現状でもゲーム用デスクトップPCだと1フレーム描くのに30msくらいでいけたりする
◦ GCの負荷が高いようで、newの回数を減らすとかなり性能向上するみたい
最初の読み込みが遅い◦ 頂点データを全部GWTの仕掛け上でシリアライズしている◦ XHRのArray転送を使えばたぶんマシになる
GWTで動くものを作っておくと、そこそこ他のところに移植できるのでたのしい◦ 意外と高速?
半額だし!!!◦ Windows Vista/7のことしか書いてない: DisplayLinkのドライバを入れればWinXP, Mac OSでもイケる
作り途中を随時アップしていきます(今のところChromeだけ)◦ http://gwtmmd.appspot.com/mmd_gwt_rv3d.html
RockVision3D向け描画