Rehber Haptics SDK: Tam Rehber

Eagle

İçerik Üreticisi
Developer
Katılım
26 Ekim 2024
Puan
3
XR Başlığı
Quest 2

Meta Haptik Stüdyosu​

Meta Haptics Studio'yu, haptikleri yapılandırmak için kullanacağınız merkezi tasarım aracı olarak düşünün. Burada, tüm ses dosyalarınızı ( .wav , .ogg , .mp3 ) içe aktarırsınız ve araç, içe aktarılan her sese göre titreşim desenleri ile sonuçlanan bir grafik analiz eder ve oluşturur. Bu titreşim desenleri, test edildiğinde, gerçek yaşam deneyiminde hissetmeyi beklediğiniz şeye yakın bir şekilde benzerdir, ancak bu durumda Meta denetleyicilerinden.

Bu yeni araçlardan önce, seçenekleriniz sabit bir titreşim üretmekle sınırlıydı. Denetleyicinin titreşimi ne kadar süreyle çalacağını ve yoğunluğunu belirleyebiliyordunuz, ancak iş burada bitti. Bu yeni araçlarla artık Quest 2, Quest 3 veya Quest Pro denetleyici motorlarındaki çok sayıda parametreye erişebiliyorsunuz. Bu genişletilmiş kontrol, titreşim üretirken Genlik, Frekans ve Vurgu gibi daha fazla parametre belirlemenize olanak tanır.

Meta'nın belgelerine göre her parametrenin (veya çağrılan zarfların) birkaç yararlı tanımı
  • Genlik: Motorun hareket ederken yarattığı titreşim veya kuvvet miktarını ayarlamanıza olanak tanır.
  • Frekans: Dokunsal motorun titreşim hızını kontrol etmenizi sağlar.
  • Vurgu: Vurgu noktası kısa, anlık bir dokunsal histir.
Meta Haptics Studio'yu Windows veya Mac için buradan indirin.

Meta Haptics Yardımcı Uygulaması​

Bu, Meta cihazınızda yerel olarak çalışan ve bilgisayarınızın IP adresini kullanarak doğrudan Meta Haptics Studio ile iletişim kuran bir uygulamadır. Meta Haptics Studio'ya aktardığınız ses dosyalarının deneyiminize göre doğru titreşim seviyesini ürettiklerinden emin olmak için bunları kolayca test etmenizi sağlar. Bu araçlar tam da burada parlıyor.

Örneğin, belirli bir seste daha yüksek bir genlik tercih ediyorsanız veya belirli zaman dilimlerinde vurgu noktaları eklemek istiyorsanız, bu değişiklikleri uygulamak için Meta Haptics Studio'yu ve test etmek için yardımcı uygulamayı kullanabilirsiniz. Son olarak, sonuçlardan memnun kaldığınızda, bunları dışa aktarabilir ve tercih ettiğiniz oyun motoruna içe aktarabilirsiniz. Aşağıdaki "Meta Haptics SDK Unity Eğitimi" bölümünde dışa aktarma işlemi hakkında daha fazla ayrıntı vereceğim.

Meta Haptics Companion uygulamasını buradan indirin.

Meta Haptik SDK'sı​

Şimdiye kadar, ürettiğiniz haptikleri tasarlamak ve test etmek için araçlardan bahsettik, ancak bunları Unity veya Unreal ile nasıl uygulayacağınızı tartışmadık. Benim durumumda, deneyimim orada yattığı için Unity'de nasıl çalıştığını açıklayacağım. Ancak, Unreal için Meta Haptics SDK hakkında daha fazla bilgi edinmek isterseniz belgelere başvurabilirsiniz . Kısacası, Haptics SDK, C# kullanarak Unity içinden HapticClips oynatmanızı sağlayan şeydir.

Haptics SDK'yi test etmek için Meta'nın The World Beyond karma gerçeklik deneyimini klonlayarak deneyler yaptım. Bunu bu araçları baştan sona test etmek için harika bir fırsat olarak gördüm. Şu anda, bu depo Haptics SDK'yi entegre etmedi. Bu araçları kendim entegre ederek test etmenin harika bir fikir olacağını düşündüm. İlginç bir şekilde, bu projeyi en son Meta entegrasyon araçlarını kullanacak şekilde yükseltmem Haptics SDK'yi entegre etmekten daha fazla zaman aldı.

Bunu genişletmek için, tüm ses dosyalarını MultiToy ses klasörü altında topladım, Meta Haptics Studio ile "TheWorldBeyond" adlı yeni bir proje oluşturdum, her ses dosyası için oluşturulan dokunsal analizin bir kısmını ayarladım ve ardından tüm dosyaları .haptic dosyaları olarak Unity kaynak klasörüne aktardım. Bir sonraki adım, basitçe Dokunsal Dosyaları oynatmaktı, bunun için Unity'de C# aracılığıyla .haptic dosyalarıyla etkileşime girmemi sağlayan HapticsManager betiğini oluşturdum.

Haptics SDK'yı minimum kurulumla entegre etmeye başlamak için aşağıdaki adımları izleyin:

MetaXRHapticsSDKSamples.png

Paket Yöneticisi - Meta XR Haptics SDK
  • Meta Aygıt İşletim Sisteminizin donanım yazılımı sürümü v47 veya üzeri olmalıdır
  • Unity 2021.3 veya daha üst sürümüne ihtiyacınız olacak
    • Kurulum sırasında “OpenJDK” ve “Android SDK & NDK Tools” modüllerinin de eklendiğinden emin olun.
  • Yeni bir Unity Projesi oluşturun ve Unity > Pencere > Paket yöneticisi'ne giderek bu com.meta.xr.sdk.haptics tarball'ını içe aktarın, ardından + işaretine tıklayın ve "tarball'dan paket ekle"yi seçin.
  • Paket Yöneticisi'nde “Meta XR Haptics SDK” öğesine tıklayın, örnekler sekmesine gidin ve “Meta Haptics Minimal Sample” öğesini içe aktarmak için “İçe Aktar” öğesine tıklayın
  • Şimdi Meta Haptics Studio'dan oluşturulan .haptic kliplerini nasıl oynatacağınızı öğrenmeniz için bir demo sağlayan "HapticsSampleScene" sahnesini açın
  • Bu sahneyi Dosya > Yapı Ayarları'na ekleyin ve Quest 2, Quest 3 veya Quest Pro cihazınıza dağıtın. İsterseniz bunu Oculus Link ile de çalıştırabilirsiniz ve her şey dağıtım sırasında olduğu gibi çalışmalıdır.

Bunları toparlayacak olursak

İşte Meta'nın yakın zamanda yayınladığı yeni Haptics araçlarının özeti. Kısacası, kullanımı o kadar kolaydı ki buraya daha fazla karmaşıklık eklemediğim için kendimi suçlu hissettim - ama sanırım bu iyi bir şey. Birçok kişi Haptics'i projelerinin sonuna doğru ele alınması gereken bir şey olarak görebilir, ancak Haptics'e öncelik vermenizi ve deneyiminizi tasarlarken ilk konuşmalara dahil etmenizi öneririm. Haptics, özellikle Haptics SDK ile, önemli bir düzeyde daldırma sağlar. Bu araçlardan üretilen titreşimler, onları "The World Beyond" oyununa entegre ettiğimde önemli miktarda cilalama ekledi.

Sorularınız varsa, yorum olarak yazmaktan çekinmeyin.

Meta Haptics SDK - Örnek Komut Dosyası​

Kod:
using Oculus.Haptics;
using UnityEngine;

public class HapticsManager : MonoBehaviour
{
    public static HapticsManager Instance;

    [SerializeField] private HapticClip clip1;
    [SerializeField] private HapticClip clip2;
    [SerializeField] private HapticClip clip3;

    private HapticClipPlayer player;

    private void Awake()
    {
        if (Instance == null)
        {
            Instance = this;
        }
        else if (Instance != null)
        {
            Destroy(gameObject);
        }
        DontDestroyOnLoad(gameObject);
        player = new HapticClipPlayer(clip1);
    }

    public void PlayClip1()
    {
        player.clip = clip1;
        player.Play(Controller.Both);
        Debug.Log($"Haptics Played: {clip1.name}");
    }

    public void PlayClip2()
    {
        player.clip = clip2;
        player.Play(Controller.Right);
        Debug.Log($"Haptics Played: {clip2.name}");
    }

    public void PlayClip3()
    {
        player.clip = clip3;
        player.Play(Controller.Right);
        Debug.Log($"Haptics Played: {clip3.name}");
    }

    // This method is for sample purposes only
    // I recommend caching the .haptic files on start and not
    // doing a Resources.Load every time you play a HapticClip
    public void PlayWithClipName(string clipName,
        Controller controller = Controller.Right)
    {
        string hapticFile = $"Haptics/{clipName}";
        var hapticsClip = Resources.Load<HapticClip>(hapticFile);
        if (hapticsClip)
        {
            player.clip = hapticsClip;
            player.Play(controller);
            Debug.Log($"Haptics Played: {hapticsClip.name}");
        }
    }

    private void OnDestroy()
    {
        player.Dispose();
    }

    private void OnApplicationQuit()
    {
        Haptics.Instance.Dispose();
    }
}
 
Geri