Unity
HoloLens

HoloLensで超人になる。リアルタイムVFX Realistic Explosions Pack #アセットアドカレ

More than 1 year has passed since last update.

この記事は Unity Assets Advent Calendar 2016 11日目の記事になります。

HoloLensは現実にプライベートな電脳空間を展開できる最高にクールなデバイスです。

という前振りとは関係ないこちらをご覧ください。

それではさっくりと実現しましょう。

まずはこの爆破エフェクトを自在に出せるようになりましょう。

Realistic Explosions Pack 1.0.0.0 (Sep 26, 2016)

image

使うスキルはエフェクトアセットでいつも大変お世話になっておりますなkripto289さんのRealistic Explosions Packです。

いつものHoloLensプロジェクトの仕込みを行う

  • Windows PlatformにSwitch
  • PlayerSettingsからVirtual Reality SupportedでWindows Holographic
  • PlayerSettingsからCapabilitiesのSpatialPerceptionをON
  • シーンのMain CameraのTransformをReset
  • シーンのMain CameraのCameraをこんな感じに image
  • シーンに空のManagerオブジェクトを作成
  • 爆破する壁とか床の空間認識(SpatialMapping)を実現するために、SpatialMappingColliderコンポーネントと、SpatialMappingRendererコンポーネントをManagerオブジェクトにアタッチする。

爆破スキルを習得する

シーンに追加したManagerオブジェクトへ下のスクリプトをアタッチ。
スクリプトではAir-TapでRealistic Explosions Packから習得したい爆破スキルのPrefabをインスタンテイト。発動は自分の見ている場所、空間認識で壁や床と認識した面をGazeManagerで使っている。

SpawnEffect.cs
using UnityEngine;
using UnityEngine.VR.WSA.Input;
using HoloToolkit.Unity;

[RequireComponent(typeof(GazeManager))]
public class SpawnEffect : MonoBehaviour
{
    GestureRecognizer recognizer;

    public GameObject effect;
    public float DistanceFromCollision = 0.01f;

    void Start()
    {
        recognizer = new GestureRecognizer();
        recognizer.SetRecognizableGestures(GestureSettings.Tap);
        recognizer.TappedEvent += Recognizer_TappedEvent;
        recognizer.StartCapturingGestures();
    }

    void OnDestroy()
    {
        recognizer.TappedEvent -= Recognizer_TappedEvent;
    }

    private void Recognizer_TappedEvent(InteractionSourceKind source, int tapCount, Ray headRay)
    {
        OnTap();
    }

    void LateUpdate()
    {
 #if UNITY_EDITOR
        if (Input.GetMouseButtonDown(1))
        {
            OnTap();
        }
 #endif
    }
    private void OnTap()
    {
        var prefab = GameObject.Instantiate(effect);
        prefab.transform.position = GazeManager.Instance.Position + GazeManager.Instance.Normal * DistanceFromCollision;
        prefab.transform.up = GazeManager.Instance.Normal;
    }
}

ついでに空間音響も使ってみる

なんと発動スキル(=Prefab)には盛大な効果音も含まれています。
せっかくなのであまり注目はされていませんが実は超凄いHoloLensの空間音響も有効にしてみましょう。

参考

Spatial sound
https://developer.microsoft.com/en-us/windows/holographic/spatial_sound

AudioSettings

  • Spatializer PluginをMS HRTF Spatializerへ

AudioSource

  • SpatializeをON
  • Spatial Blendを1(3D)
  • Volume RolloffをCustom Rolloff image

完成

file.jpg