たくあんポリポリ

勉強したことを載せていきます。最近、技術系の記事はZennに書いています。(https://zenn.dev/chittai)

Oculus Rift + VRIK で 初音ミクになりきってみる~画像をFacebookに投稿する~

VR内で写真(静止画)をとることができたので、合わせてSNSにも投稿できればいいなと思い、機能を作ろうとトライしてみました。まだ未完成ですが、記録として記事を残しておきます。色々素人感がでてますが、そこはこれからってことでお願いします。

完成図

以下の様に、VR内で取得した画像をVR内での操作でFacebookに投稿できるようにしたいと思っています。あとで記載しますが、SDKを使用してFacebookで投稿するときはFacebookにアプリのレビューを受けなければならず、今回はそこまでできなかったのでテストユーザにて動作確認をしています。あと、今回はHMDを着けずに外から操作しています。

www.youtube.com

やったこ

基本的には、以下で作成しました。

  • Facebook SDK for Unity をインポートする
  • Scriptを書いて、適当なObjectにアタッチする
  • テストユーザでの動作確認

Facebook SDK for Unity をインポートする

以下のサイトからSDKをダウンロードしてUnityにImportします。
Unity SDK - ドキュメンテーション - 開発者向けFacebook

Scriptを書いて、適当なObjectにアタッチする

今回ですが、Scriptは以下の処理を書いています。

  • 初期化処理
  • ログイン処理
  • 投稿処理

このあたりはリファレンスにあった参考コードとかを使用してガリガリ書きます。ソースコード全体はもう少しきれいにしてから公開しますが、一旦投稿部分だけ公開します。

自分が作成したScriptではXボタンで写真を取ることができ、Assets/Resourcesに、取得したキャプチャを「SavedScreen.png」というファイル名で保存するようにしています。
c-taquna.hatenablog.com

その後、Yボタンを押すことで上記の初期化から投稿処理までを行っています。その投稿処理の中で取得したキャプチャのファイルを読み込んで投稿できるように処理しています。

    private void Posting()
    {
        FileStream fileStream = new FileStream(Application.dataPath + "/Resources/SavedScreen.png", FileMode.Open, FileAccess.Read);
        BinaryReader bin = new BinaryReader(fileStream);
        byte[] readBinary = bin.ReadBytes((int)bin.BaseStream.Length);
        bin.Close();

        var wwwForm = new WWWForm();

        wwwForm.AddBinaryData("image", readBinary, "SavedScreen.png");
        FB.API("me/photos", HttpMethod.POST, APICallback, wwwForm);
    }

投稿処理の中で、取得したキャプチャ正直このあたりの内部処理もちゃんと理解しきれていないんですがね。。。

テストユーザでの動作確認

以下に書いてあるのですが、投稿するアプリを作る際にはFacebookのレビューを受けなければいけません。
リファレンス - Facebookログイン - ドキュメンテーション - 開発者向けFacebook

ただ、テストもなしでリリースできるはずもないのでFacebookが用意しているテストユーザを使用して動作確認を行います。詳細は以下のURLから確認してください。
テストユーザー - アプリ開発 - ドキュメンテーション - 開発者向けFacebook

開発者用のアプリ開発画面でテストユーザを選択します。
f:id:c_taquna:20170925020743j:plain

そしたら、そのアプリに紐づくテストユーザの一覧が確認できます。Open Graph Test Userは最初から登録されていました。
f:id:c_taquna:20170925020746j:plain

そのユーザの右側にある編集ボタンを押すと以下の項目がでてくるので、ログインしてみてください。
f:id:c_taquna:20170925020737j:plain

以上で、テストユーザを使用してログインするまでが完了です。Unityでプレイモードにしてから投稿すると、このテストユーザのFacebookページにて投稿を確認することができます。

修正したい点。というか修正が必要な点。

アクセストークンの入力がいちいち必要な点

今は、投稿しようとするたびに以下の画面がでるのでHMDかぶりながらの操作ができないです。なので、Scriptで処理できると思うので方法を調査するとことから始めたいなと。
f:id:c_taquna:20170925022556j:plain

メモリ食い過ぎ問題

プレイモードにすると、メモリの使用量がぐんぐん上がっていくのでなんとかしたい。Sprite Rendererで取得したキャプチャを表示しているGameObjectが問題っぽいのだが、原因と対処方法が思いついていないので放置していますが、対策は取りたい。

f:id:c_taquna:20170925022726j:plain

今までの記事

上が最初で下に行くほど新しくなります。

c-taquna.hatenablog.com
c-taquna.hatenablog.com
c-taquna.hatenablog.com
c-taquna.hatenablog.com
c-taquna.hatenablog.com