LoginSignup
1
2

More than 5 years have passed since last update.

GameJamでMicrosoft Cognitive Service(EmoteAPI)を使ってみました。

Posted at

CrossOverGameJam04
http://www.crossover.link/cogj04/

2017年7月7,8,9日 品川マイクロソフトにて行いました。
(制作自体は8,9日)

お題:顔認識を使ったなにか
企画:複数端末を使用した顔の感情を使用したじゃんけん

企画の内容は以下の通り
①カメラで撮影する
②撮影した映像でAPIを叩く→結果でグーチョキパーを決定
③勝敗判定後、勝利側の攻撃モーションが走る
④勝敗表示

使用したAsset、ツール等

・iOSNative(写真撮影)
・Microsoft Cognitive Service - Emotion API(写真解析)
・MiniJSON(解析結果パース)
・Photon Cloud(同期処理)

実際の処理はこんな感じ

①PhotonCloudで部屋に2人入室したらゲームスタート
②写真を撮る
③API実行
④相手に結果を送る、相手から結果が来るまでひたすら待機
⑤結果がきたら各端末で処理してアニメーション実行
⑥勝敗を表示する

実際に使ったEmoteAPIの呼び出しメソッド

https://azure.microsoft.com/ja-jp/services/cognitive-services/emotion/
↓実際のソース(一部)

EmoteAPI.cs
/// <summary>
/// 感情認識API実行
/// </summary>
/// <param name="texture">Texture.</param>
/// <param name="callback">Callback.</param>
public IEnumerator Connect (Texture2D texture, UnityAction<EntityEmoteModel> callback)
{
    Debug.Log ("Start Emote API");
    // 使うAPIによってURLが変わる
    var url = "https://westus.api.cognitive.microsoft.com/emotion/v1.0/recognize";

    byte[] bytes = texture.EncodeToPNG (); 
    // ヘッダはだいたい固定
    var headers = new Dictionary<string, string> () {
        {"Ocp-Apim-Subscription-Key", [取得したAPI_KEYを入力してください]},
        {"Content-Type", "application/octet-stream"}
    };

    WWW www = new WWW (url, bytes, headers);
    yield return www;
    Debug.Log (www.text);
    // JSON形式でくるので適当にデータクラスに突っ込む
    var request = new EntityEmoteModel ();
    request.DeSerialize (www.text);
    // データを返す
    if(callback != null)
        callback (request);
}

今後の課題

・構築したGitLabサーバーの速度が遅いのでPull/Pushに時間がかかりすぎる
 →結局Bitbacketを使って開発を行った。

その他GameJamの醍醐味

・お昼をみんなで楽しむ


お菓子駆動開発

・みんなでおかし食べながらだと楽しい!!
IMG_3877.jpg

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2