誰でも簡単にARのコンテンツ作成体験ができることを目指して
なぜ作ったのか
ARを作りたいけど3Dモデル作り方わからないし、誰かが作ったものはライセンスを気にして使う必要がある。 動画を撮る感覚で撮影して、手軽にARコンテンツとして利用できればデジタルな世界が苦手な人でも利用しやすくなるのではないか?と思った。 店舗の紹介、自分のアピール動画など、動画で撮影してアップロードして、その場所に思い出や宣伝となるコンテンツを残せる仕組みが作れるなど応用として使えると考えた
何をするか
動画から人物を抽出して背景をクロマキーに変換する
動画を撮影するだけで、人物のみを抽出できる。
人物を抽出するアルゴリズムは、 Robust High-Resolution Video Matting with Temporal Guidanceを引用させてもらっている
動画ファイル名に緯度経度を含んでアップロードした後、人物のみを抽出、HLS動画に変換してS3に保管し、dynamoDBにS3の格納場所、位置情報を保管している
みんなに使ってもらおうと思ったけど、Pythroch CUDAを動かすGPUマシンがAWS EC2でもなかなか高くなり(個人の予算として)、今回は非公開にしています。 安価にできたら幅広く公開していきたい。
位置情報から半径10m以内のAR動画を取得して表示する
ブラウザからロケーションが変わるたびにサーバ上に格納されているデータの位置情報と現在地の位置情報を比較して10m以内であれば対象の動画を表示する判定を行っている
現在位置からYahoo気象情報APIを取得
Yahoo気象情報APIは位置情報に基づき現在の降水量、1時間単位で最大5時間後までの降水量のデータを保持している 5時間後のデータを活用して、降水量が0.1以上であれば傘の画像、0ならば太陽のアイコン(夜は月)がAR空間上に表示されるようにした
振り向くと天気が分かる的な。。。
glbファイルで3Dの太陽とか出そうと思ったけど、動画のコンテンツはペラペラだから天気表示もペラペラな透過型のPNGファイルを「いらすとや」さんのものを使わせていただいた
8th wallから外部のAPIを使う場合には、CORSを気にする必要があります。 今回はnginxを間に挟んで、レスポンスヘッダーにCORS周りのヘッダーを追加して返答するようにしています。
この辺、8th wallでもリバプロみたいなもの間に挟めるとありがたいなー
現在位置からYahooYahoo!ローカルサーチAPIで最も近い店舗名を取得
これは正直すごく悩んだ。 AR的にどんな表示をしたらわかりやすく、便利なのか? あまり表示しすぎてもわからないし、しなさすぎてもわからない。 悩んで飲食店の店名のみになってしまった。。。これは今後いい表現を考えていきたい
位置情報に関するAPIをうまく組み合わせて、個人でもARコンテンツを簡単に投稿できるアプリケーション開発を目指したところがユニークです。今後の発展性への期待を込めて、Yahoo!デベロッパーネットワーク賞をお贈りします。