2011年12月5日月曜日

Webで3Dをやるということ

こんばんはー!HTML5 Advent Calender 5日目だよー!

ちょっと今日はお疲れなのでボリュームは小さめだけどがんばります。
今日はHTML5というかWebでの3Dについて、小話させてもらうね。



Webで3Dやりたい
Webで3Dやる方法っていくつもあると思う。私が知ってる最も古い方法はVRMLとブラウザプラグインを使用する方法。ほかShockwave 3DとかGoogle O3Dとかがありました。
しかしあんまり普及している様子はないですね。原因はPCの性能不足だとか色々言われてます。

最近だとFlashやUnity、そしてWebGLがWeb 3Dプラットフォームとしては選択肢に上がるでしょう。
WebGLはGoogleもGoogle MapをWebGL化する等勢いがあります。
しかし、今3Dに求められているものは非常に高度化しています。
とある人は「ユーザーは3Dにハイレベルなグラフィックを期待してしまう」と指摘していました。
高度なことを行うためには「クライアントの性能」「十分な帯域」等が必要でしょう。
それにWebGLを始めGPUを使った3DレンダリングはGPUを選ぶことも問題となってきます。実行環境によって結果が違うということもまだまだ珍しいケースとは言えません。
また、実装に手間がかかるという点も無視できませんし、スマートフォン対応も十分とは言えません。

スマートフォンではCSS TransformやCanvas 2Dを使用してどうにか動かすという方法があります。しかし、XperiaのWebGL対応を始めプラットフォームが追いつき始めているのでそこまで無理をする必要はないかもしれないと思います。

とにかくスマートフォンで動くようになること。コレがカギだとは私は思っています。

Webで3Dってどう勉強するの?
勉強会の後の懇親会でこういう話を結構聞きました。確かに難しいですよね。
数学やGPUとのやり取りとか色々。
もともとC++とかで3Dやってた人はJavaScript覚えるだけなので簡単だとは思います。
MDNとか読みつつ行けば多分どうにかなります。
場合によってはSpecificationも読むことになると思います。
私も元々はOpenGLやDirect 3Dをいじってた人間なのでなんとなくどうにかなる気がします。

「JavaScriptはわかるけど3Dはわからない」という人は結構つらいかも。
今もっとも参考になるサイトはLearning WebGLだと思います。
ほかにもOpenGLやGLSLに関する情報はだいたいWebGLにも当てはまるのでこれを中心に勉強していけばいいと思います。

Three.jsは簡単だという話もよく聞きますし私としてもオススメしますが、ドキュメントが充実しているとは言えないかもしれません。
私が使ったときはソースコードを読みながらの実装になりました。
オープンソースに慣れている人であれば苦労しないかもしれませんね。

終わりに
小話的なつまらない内容になってしまい申し訳ございません。
最近はUnityやWebGLの勢いがあることをとても嬉しく思っています。
特にWebGLはブラウザゲームで注目されていると思います。
WebGLなゲームがガンガン出てくることを期待してますよー!

0 件のコメント:

コメントを投稿