UnityによるiPhoneカメラアプリ作成2

      UnityによるiPhoneカメラアプリ作成2 はコメントを受け付けていません。

頭の位置に帽子をのせる

ここでは、Asset Storeから3Dオブジェクトをダウンロードし、カメラで映った自分の頭の位置にその3Dオブジェクトを表示してみます。まず、Window > Asset Storeを洗濯します。

すると、シーンビューの位置にAsset Storeタブが表示されます。まずは、「hat」というキーワードで検索し、PricingのFree Assetsの項目にチェックを入れましょう。

ここでは、 「Free Christmas Assets / Low Poly」を選んでダウンロードし、さらにインポートしてください。

すると、Import Unity Packageという画面が出てきますので、以下のように帽子のパーツだけインポートします。

これでインポートが完了しました。Christmas-Assets-Free > Prefabsに、Santa-Hatがあるので、ヒエラルキーウィンドウにドラッグしてインスタンス化します。さらに空のオブジェクト(Hatに名称変更)を作ってその中に入れます。

Santa-Hatの位置とサイズを変更しましょう。Hatが親オブジェクトで、Santa-Hatが子オブジェクトになります。親オブジェクトの位置やサイズを変えても、プログラムに反映されないので気をつけてください。

ExpressionManagerのスクリプトにHeadというゲームオブジェクト型の変数を追加します。Mouthの下がいいでしょう。

1
2
3
4
5
[SerializeField]
private GameObject Mouth; //口用インスタンス
 
[SerializeField]
private GameObject Head; //頭用インスタンス

FaceAddedメソッド内でHead.SetActive()をtrueにします。

1
2
3
4
5
6
7
8
9
void FaceAdded(ARFaceAnchor anchorData)
{
 
    <中略>
 
    Head.SetActive(true);
 
    <中略>
}

FaceUpdatedメソッド内で以下のコードを追加します。if (Mouth.activeSelf…の後がいいでしょう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void FaceUpdated(ARFaceAnchor anchorData)
{
    <中略>
 
 
    if (Mouth.activeSelf != anchorData.isTracked)
    {
        Mouth.SetActive(anchorData.isTracked);
    }
    if (Head.activeSelf != anchorData.isTracked)
    {
        Head.SetActive(anchorData.isTracked);
    }
 
 
    <中略>
}

FaceRemovedメソッドにHead.SetActive(false)を追加します。

1
2
3
4
5
6
7
8
void FaceRemoved(ARFaceAnchor anchorData)
{
    <中略>
 
    Head.SetActive(false);
 
    <中略>
}

UpdatePositionAndRotationメソッドに以下のコードを追加します。

1
2
3
4
5
6
7
8
9
10
11
12
13
private void UpdatePositionAndRotation(ARFaceAnchor anchorData)
{
    if (anchorData.isTracked)
    {
        <中略>
 
        //頭の位置と回転////////////////////////////////////////////////////////////////////
        Head.transform.localPosition = UnityARMatrixOps.GetPosition(anchorData.transform);
        Head.transform.localRotation = UnityARMatrixOps.GetRotation(anchorData.transform); 
 
        <中略>         
    }
}

最後に、ヒエラルキーウィンドウでExpressionManagerを選び、インスペクタのHeadにHatをドラッグ&ドロップします。

プログラムを実行すると、サンタの帽子が追加されていることを確認できます。