kumaryu日記
2011-06-23
_ [Ruby][OpenGL] RubyでWebGL
RubyでWebGLをいじってみました → <URL:http://www.kumaryu.net/prog/ruby-webgl/index.html>
うちの環境*1でしか動作確認してないので運が良い場合は動くでしょう。もし運良く動いたとしても立方体が回ってるだけで面白くはないので、よかったらソースを見てやってください。WebGLなんでIEでは動かんのだけれど、JavaでWebGLする何かっての使えば動くようにもできんのかなもしかして。
あーMacで動かしてみたらさっぱり動かん。なんかWindowsでもVMではなんか動かねー。まあ動かなかったらソースを見て雰囲気を感じ取ってください。
何がうれしいってRubyで書けるくらいで他にはさっぱり嬉しいこともなにもないんですけどねー。
何がすごいってこんなの書くのに一ヶ月半くらいかけやがったことなんですけどねー。といっても拡張ライブラリで書いてあった3D数学系のライブラリをPureRubyに移植するのに時間かかってただけなんだけれども。
しかしJavaScriptは環境破壊とか言ったと思ったら無理してブラウザ上でRuby+WebGLというとても無駄なことをやってしまうわけです。まあ良い子は真似しないでねと言うまでもなく真似しないだろうからべつにいいや。
ところでなんで俺はこんな物試そうとしたんだろうか…?
ネタバレ(?)だけど一応技術的なことも書くか。
ブラウザの中で平気な顔してRubyが動くのはSilverlightとIronRuby(とかIronPython)でそういう物があって、詳しくはIronRubyのサイトのBrowserあたりを参照のこと。SilverlightからはHtmlWindowクラスを使うとJavaScriptのオブジェクトを作ったり取ってきたり関数呼んだりプロパティ取得したりできるので、そこまでいったらあとはもう普通にWebGLするだけです。
描画更新はrequestAnimFrameて関数に更新関数を渡してやってるんだけど、更新関数を渡すのが一番難しかったね。調べたら普通にデリゲート作ってやってJavaScript側に渡すと向こうからは関数呼び出しとしてコールバックされるという簡単な話だったんで、Actionデリゲートを作って渡すだけでした。
ところでSilverlight5にはXNAというものがあって3D描画はできるんだけど、まだ5はβなんでみんな入ってないでしょ?あとMac版に実装されてないのでWindows専用。いまどきWindows専用。ブラウザの中で動くのにWindows専用ってActiveX(笑)かよ。ああ、じゃあWebGLならMacでも動くんじゃねーかと思ってやってみたんだった。まあそりゃ当然動いたけど遅いし無駄だし使う気まったくないけどな。
*1 WindowsのFirefox4
_ 日記
なんか変なものを上げてたら日記に書こうとしたことをすっかり忘れた。
せっせと作ってた変なものがやっと終わったからまともな作業に戻れるわ何から手をつけようかそうだそろそろirpackやろう。とかそんなんだった気がしたわ。
www.kumaryu.netの方にもzenbackつけたり、以前のHikiのURLからできるだけリダイレクトするようにしてみました。あと何かしようと思ったんだけど忘れたからいいや。