PHPでPhotosynthのSOAP APIを呼んでみた


Photosynthには、下記のURLにおいてSOAP APIが用意されています。
PhotosynthService Web Service

今回は、この中から『GetCollectionData』というAPIを使ってみることにします。これは、対象のPhotosynthのGUID(PhotosynthのコンテンツのURLの最後についているID。先日紹介したNASAのPhotosynthなら、”a8d71756-1671-493e-a07d-4ebf0eda0faf”)を渡すことにより、そのPhotosynthのデータついて記述したXMLを返すAPIです。

実を言うと、PHPでSOAP APIを利用する方法以前にSOAPというものがどういうものかよく分かっていなかったのですが、簡単に説明するとPOST渡しで指定のフォーマット通りにXMLを渡すとXML形式で結果が返ってくるのがSOAPだそうです。でも、どうやらWSDLモードというものがあると、それを使うことによりSOAP APIを簡単に利用できるのだとか。普通にXMLで渡す方法でいいような気もするのですが、PHPでSOAPを使う方法を探してみるとこのWSDLモードを使う方法ばかりで、これが正直よくわかりませんでした(PhotosynthのWSDLはこちら)。正直今でもよく分かってない部分はあるのですが、とりあえず下記のサイトなどを参考に作ってみました。
参考:PHP: SoapClient – Manual
参考:PHP5のSOAP関数のサンプル

そうして作った関数が下記。

これは、PhotosynthのGUIDの文字列を引数にいれて呼ぶと、SOAP APIのGetCollectionDataを呼んだ結果を返す関数となっています。

試しに下記のような感じで、var_dumpで出力するだけのページを作ってみました。

サンプルページ:NASAのPhotosynthのGUIDでSOAP APIを呼んだ結果

ここで、JSON形式で書かれたページのURLを取得できますが、ここからPhotosynthで利用している画像を取得するのに必要なデータが得られるようです(本当はその画像を表示するページを作ろうと思ったのだけれども、単純にJSONに画像のURLが書かれてるわけではないようなので断念。そのうちそのようなページを作るかもしれません)。

他にも、最初に記したページを軽く読み流してみると、APIを使うことにより、Photosynthを独自のサーバーで追加したり削除したりできるようです。使い方はわかりませんが・・・。

余談ですが、先日、Photosynthを開発したMicrosoft Researchのシリコンバレーの開発拠点が閉鎖されたようです。
参考:米マイクロソフトが2100人削減、シリコンバレーのR&D拠点閉鎖 | ビジネス | 最新ニュース | ニューズウィーク日本版 オフィシャルサイト
参考:Microsoft Research Silicon Valley 最後の日を見て – (iwi)の日記

このニュースについて、Photosynthがどれぐらい関係しているのかどうかというのはよく分かっていないのですが、今後どうなるのか気になります。

Photosynthの写真や点群データをダウンロードできる『SynthExport』


PhotoSynthは残念ながら、ダウンロードしてオフライン上で実行するということはできないようなのですが、写真や点群(point cloud)データはダウンロードすることができます。その写真や点群データを簡単にダウンロードすることができるソフト『SynthExport』を簡単に紹介します。
SynthExport – Home

上記ページ右側の『download』というボタンをクリックすると得られるzipファイルを解凍したフォルダの中に、『SynthExport.exe』というファイルがあると思うので、それをダブルクリックすると下記のような画面がでてくると思います。
SynthExport

ここのURLの箇所に、PhotosynthのコンテンツページのURL(例えば、先日公開されたはやぶさ2機体公開のPhotosynthなら、https://photosynth.net/preview/view/39edbee0-2290-494c-a4eb-b07c768014bc。以下、このURLで試した例)を入力し、右の『Load』ボタンを押します。すると、下記のように写真の一覧が表示されると思います。
SynthExport
ここで、右下の『Export…』ボタンを押すと、写真をダウンロードすることができます。

また、『Point clouds』タブをクリックすると下記のような画面になると思います。
SynthExport
ここで、右下の『Export…』ボタンを押すと、点群データをダウンロードすることができます。

試しに、作成したファイルをMeshLabというソフトで見てみると、下記のようになりました。
meshlab
あまりキレイではないですが、なんとなく点群データとしてダウンロードできたということがわかると思います(自分も、MeshLabの使い方はよく分かってないので分からないのですが、もしかしたらもっとキレイに見せれる方法もあるかもしれません)。

後は、上記のはやぶさ2のPhotosynth(というより、第三世代)では選択できませんが、『Cameras』というタブがあるのがわかると思います。これは、URLに入力したコンテンツが第一世代のPhotosynthの場合にのみ表示されるもので、撮影された写真に対するカメラの情報が書かれたCSVファイルを作成することができます。

上記の写真、点群データ、カメラ情報はPhotosynthの種類によってダウンロードできるものが異なり、どの種類がどの種類のデータをダウンロードできるのかということは、SynthExportのページの『Features』という箇所に書いてあります。簡単に訳してみると下記のような感じ。

写真 点群データ カメラ情報
第一世代(オリジナル版)
第二世代(パノラマ版) 六角形にした面のみ
第三世代(スピン)
第三世代(パノラマ)
第三世代(ウォーク)
第三世代(ウォール)

なお、第二世代(パノラマ版)については、写真をMicrosoft Research Image Composite Editor (ICE)で見れる形式で保存することができます。このソフトはパソコン上で複数の写真からパノラマ写真を作ることができるソフトで、このソフトからPhotosynthに投稿することもできます。

3種類のPhotosynthまとめ


最近、わけあって(というより仕事で)、Photosynthについて調べてるので簡単にまとめてみます。本当は自分でアップロードしたものを載せてから記事にしようと思ったのですが、面倒なのでやめました。
Photosynth – Capture your world in 3D.

Photosynthというのは、Microsoftが開発したサービスで、複数の写真を縫い合わせたような3D空間が作れるというサービスです。読み方は、『フォトシンス』ではなく、『フォトシンセ』のようです(参考:Microsoft APPS 2012 No.1 – Windows Phone)。Photo(画像)とSynth(シンセサイザー)の単語をつなげたものと思うと、『フォトシンセ』と読めると思います。利用や閲覧には大概の場合、Silverlightが必要なので、基本、Windowsじゃないと見れないかもしれないです。

ところで、一概にPhotosynthといっても、大きくわけて三種類あります。ここでは仮に、第一世代、第二世代、第三世代として簡単に紹介していきます。

第一世代(original synths)

写真の重複部分を縫い合わせて3D空間を作り出すPhotosynth :教えて君.net

2008年、最も最初にリリースしたPhotosynth。様々な角度と場所で撮った写真を一つの空間内に納めるような技術となっています。上記のNASAが公開しているのが一番有名かも。

マウスを載せるとところどころで四角いフィルターのようなものが表示されマウスカーソルがポインター状になると思うので、その時にクリックすると拡大したり縮小したり角度が変わったりする。その他、右下の四角が2つ重なってるアイコン(右から2つ目)にマウスを載せると『3Dビュー』『頭上からの角度』『2Dビュー』『点群の3Dモデル』のそれぞれのモードに切り替えることができる。
第一世代
2Dビューにすると、写真をクリックするだけでは見れない方向の写真もあることが分かる。そういう場合は、2Dビューモードにして特定の写真を選択し、3Dビューモードに切り替えるとその写真を含んだ3Dビューが見れる。点群モードにすると、写真の特徴点を3Dモデルの点の集まりが見れる。ある意味、3Dビューモードより、3Dっぽいかもしれない。

投稿するには、投稿用ソフトのダウンロードが必要(Create your own Photosynths – Photosynth)。左記サイトの『Download Photosynth for synthing and publishing』の『Photosynth』部分のリンクがダウンロード用のリンクとなっている。そのソフトに写真をいれて『Synth』ボタンを押せば投稿できる。
第一世代
左の『Visibility』というのは、多分、検索に引っかかるかどうかということだと思います。『Public』が検索にひっかかり、『Unlisted』がひっかからない。ただし、Unlistedでも、直接URLを入力してアクセスすれば閲覧することができます。

第二世代(stitched panoramas)

無料で立体感のあるパノラマ画像を作成できるアプリ「Photosynth」 – GIGAZINE

2011年リリース。いわゆる、パノラマ写真を作ることができる。パノラマ写真といっても、横か縦というわけではなく、横も縦も360度とることができるため、全天球な写真も作ることが可能。

利用にはPC版(Microsoft Research Image Composite Editor (ICE))とアプリ版があり、アプリ版はWindows PhoneアプリとiOSアプリを提供している(Android版はなし)。

360°天球カメラのTHETAにも対応しており、THETAを使うと簡単に全天球のパノラマ写真を作ることが可能。
参考:PhotosynthでThetaを試す | 景観デザインを目指せ
不動産のサイトなんかでよく使われるようです。

ちなみに、この世代はSilverlightが入っていないiPhoneやiPadのSafariでも、HTML5のcanvasの機能とCSS3のtrans-formの機能を使ってみることができるようになっている。

第三世代(technical preview)

無料でストリートビュー風のスライドを作成できるようになった「Photosynth」 – GIGAZINE

asteroid explorer hayabusa2 rollout はやぶさ2機体公開 at sagamihara by nvs-live on photosynth

2013年12月リリース。複数の写真を動画のように見せる技術となっている。第三世代とひとくくりにいっても、この中に細かく『スピン』『パノラマ』『ウォール』『ウォーク』の4種類のモードがある。エキスパート撮影ガイドがあるので、それを見ると分かりやすいと思う(エキスパート撮影ガイド)。

投稿はブラウザを使って行う。第一世代が投稿するだけで投稿用のソフトをダウンロードしなければならなかったが、現在はHTML5が普及してきたためウェブで完結するようになってると思われる。

閲覧時にcキーを押すことにより、カメラモードになる。どういうものか説明しづらいのだけれども、ある1点から、撮影した写真一つ一つを3D状に配置したものを離散的に見ることができ、マウスホイールを使うことにより視点を近づけたり離れたりすることができる。こんな説明じゃよく分からないと思うので、試しに見てる最中にcキーを押してみることをお勧めする。

また、mキーを押すとマップモードになる。このキーを押すことにより、右上に一本の線が表示され、動画の動きの流れが分かる。マリオカート64においてレース中に画面右下に表示されるコース概要図のようなものといえば分かるかも(余計わからないか)。