ツッコミ大歓迎!間違等ありましたらご指摘ください! / はてダはこちらで書いてます。
Google Maps Street View が先日、日本のマップ分が追加されて、時の経つのも忘れて遊んで(徘徊して)ます。こういう360度ぐりぐり見渡せるようなVeiwって簡単にできるのかと調べていたら、どうもOpenGLを使えばかなり簡単に出来そうな気がしたので、Ruby-opengl (OpenGLのRubyバインド) を使って書いてみました。
なお、はじめての Ruby-opengl だったので、fujiの雑記 などを参考にさせていただいております。基本はGLUTとかからおんなじなので、CでGLUTを使って書いていたような人だとなじみやすいかも(というかそのまま)です。
まず動作には、JPEGのローディングに使っている ImageMagick と、gem では、ruby-opengl および rmagick が必要ですので、たとえば
$ sudo port install ImageMagick $ sudo gem install ruby-opengl $ sudo gem install rmagick
のようにしてインストールしておいてください。後は以下のソースを適当なファイル名(以下ではpanorama.rb)で保存して、
$ ruby panorama.rb test.jpg
のようにすると、test.jpg をテクスチャに読んで表示されます。テクスチャ画像(権利的に大丈夫と思われるもの)は このへん から入手できます。
起動すると、以下のような画面が出て、Street viewと同様な操作感マウスでDragができます。あとwキーでワイヤーフレーム表示、qキーで終了です。ズームは出来ませんので、適当に改造してみてね。
どうもこれは、Spherical Panoramasというジャンルっぽいです。仕組みは凄く単純で、球面の内側にべたっと普通にテクスチャを貼るとその急の内側から見ると全天が見渡せる、というような感じです。
コードは以下になります。 なんか変なのでgistで貼ってみました。