【2019年版】Unity公式のAsset『Head Look Controller』の使い方

3Dモデルの視点をカメラやオブジェクトに固定するには、Unity公式のAsset『Head Look Controller』が便利です。

しかしこの『Head Look Controller』はちょっと古いアセットのようで、うまく動かすには気をつけなければならないポイントがいくつかあります。

この記事ではUnityの新しめのバージョン(2019.3.0a4、2019.2.0b4、2018.4.4f1の3つで確認)で、3Dモデルの視点をカメラに固定する方法をご紹介します。

スポンサードリンク

▼まずはAsset Storeで、Unity公式の『Head Look Controller』をダウンロード&インポートします。

▼さらに今回テストとして使用するUnity公式の3Dモデル『Space Robot Kyle』もダウンロード&インポートします。

▼プロジェクトを作成して、適当にplaneを敷いて3Dモデルを設置しました。

そしてまずはスクリプトを3Dモデルとカメラに追加します。

▼まずは3Dモデルを選択して、先ほどインポートしたHeadLookControllerのscriptフォルダにある「HeadLookController」をドラッグ&ドロップで追加します。

▼次にカメラを選択して、「CursorHit」をドラッグ&ドロップで追加、さらにHead Lookのプロパティに先ほど3Dモデルに追加したHeadLookControllerを設定します。

ちなみに複数の視点を一つの場所に向けたい場合は、CursorHitを追加することでできます。

▼そしてここいらでスクリプトの修正を行っておきましょう。
これをしないとうまく動かすことができません(2019年版だとエラーで動かない。2018では一応動くけど変な挙動をしてしまう)。
今カメラに追加したCursorHit.csの16行目から20行目(Ray cursorRay = …からの5行)をコメントアウトします。これだけです。

using UnityEngine;
using System.Collections;

public class CursorHit : MonoBehaviour {

    public HeadLookController headLook;
    private float offset = 1.5f;

    
    void LateUpdate () {
        if (Input.GetKey(KeyCode.UpArrow))
        offset += Time.deltaTime;
        if (Input.GetKey(KeyCode.DownArrow))
        offset -= Time.deltaTime;

        // Ray cursorRay = Camera.main.ScreenPointToRay(Input.mousePosition);
        // RaycastHit hit;
        // if (Physics.Raycast(cursorRay, out hit)) {
        // transform.position = hit.point + offset * Vector3.up;
        // }

        headLook.target = transform.position;
    }
}

次に3Dモデルに追加したHeadLookControllerの設定をしていきます。

▼まず「Segments」と「Non Affected Joints」の「Size」をそれぞれ「2」にします。
するとそれぞれElement0、Element1という項目が現れます。

▼基本的にはHeadLookControllerのデモsceneにいるこのおじさんの設定を参考にします。

▼このように設定しました。
ここで重要なことはSegmentsElement0Element1Non Affected JointsElement0Element1この4つの部位をしっかり設定しなければならない(一つでも欠けてるとダメ)ということと、Override Animationにチェックを入れることです。

微調整は後でするとして、とりあえず公式にならって4つの部位を設定します。

Segments Element0
脊髄の部分にあたるBoneを設定します。
3Dモデルによって名前は違います。
多くはSpineという名前がついているかと思います。
このロボットのモデルはRibs(肋骨)という名前でした。
First、Lastというのは恐らく動かす順番ですが、Ribsが一つしか無かったので両方ともRibsにを設定しています。

Segments Element1
首の部分にあたるBoneを設定します。
公式にならってNeck、Headという順番で設定しました。
両方ともNeckにしてもちゃんと動きました。

Non Affected Joints Element0
左腕にあたるBoneを設定します。
前腕部分を設定しました。

Non Affected Joints Element1
右腕にあたるBoneを設定します。
前腕部分を設定しました。

Override Animation
こちらデモにはチェックが入っていませんが、これを入れないと首や腰が高速でグルグル回り続けたりと恐ろしいことが起きます。
恐らく新しめのバージョンの場合にはチェックしないとダメなのかと思います。

ちなみに3Dモデルに設定されたBoneの名前の確認は、3Dモデルを選択→「Select」→「Rig」→Animation Typeを「Humanoid」に変更→「Apply」→「Configure」でできます。

以上で設定は完了しました。

カメラを3Dモデルの横などに配置して再生すると、カメラの方を向きます。

もちろんVirtual Reality SupportedをオンにしてVRヘッドセットで見ると、ずっと見られます 笑

スポンサードリンク

コメント

タイトルとURLをコピーしました