Unity'de odak noktası

Ad alanı:UnityEngine.XR.WSA
Tür:HolographicSettings

Odak noktasını kullanarak şu anda HoloLens hologramları en iyi şekilde nasıl dengeley dair bir ipucu sağlar.

Unity'de Odak Noktası ayarlamak için HolographicSettings.SetFocusPointForFrame()kullanılarak her karenin ayarlanmış olması gerekir. Odak Noktası bir çerçeve için ayar değilse varsayılan sabitleme düzlemi kullanılır.

Not

Varsayılan olarak, yeni Unity projelerinde "Derinlik Arabelleği Paylaşımını Etkinleştir" seçeneği ayarlanmıştır. Bu seçenekle, tam ekran masaüstü başlığında veya Windows 10 Nisan 2018 Güncelleştirmesi (RS4) veya sonraki bir işletim setini çalıştıran bir HoloLens üzerinde çalışan Unity uygulaması, hologram kararlılığını otomatik olarak iyileştirmek için uygulamanıza odak noktası belirtmeden derinlik arabelleğinizi Windows'a gönderecektir:

  • Çevreleyici bir masaüstü başlığında bu, piksel başına derinlik tabanlı yeniden seçime olanak sağlar.
  • Nisan 2018 HoloLens veya sonraki bir Windows 10 çalıştıran bir çalışma alanı için bu, derinlik arabelleği analiz edip otomatik olarak en uygun dengeleme düzlemi seçer.

Her iki yaklaşım da, her kare için bir odak noktası seçmek için uygulamanız tarafından açıkça çalışma yapmadan daha da iyi görüntü kalitesi sağlansın. El ile bir odak noktası sağlarsanız, bunun yukarıda açıklanan otomatik davranışı geçersiz kılabilir ve genellikle hologram kararlılığını azaltacaktır. Genel olarak, yalnızca, uygulama nisan 2018 güncelleştirmesi HoloLens henüz güncelleştirilmiş bir Windows 10 odak noktası belirtmeniz gerekir.

Örnek

SetFocusPointForFrame statik işlevi üzerinde bulunan aşırı yüklemeler tarafından önerilen Odak Noktasını ayarlamanın birçok yolu vardır. Aşağıda, odak düzlemi her kare için sağlanan nesneye ayarlamak için basit bir örnek verilmiştir:

public GameObject focusedObject;
void Update()
{
    // Normally the normal is best set to be the opposite of the main camera's
    // forward vector.
    // If the content is actually all on a plane (like text), set the normal to
    // the normal of the plane and ensure the user does not pass through the
    // plane.
    var normal = -Camera.main.transform.forward;     
    var position = focusedObject.transform.position;
    UnityEngine.XR.WSA.HolographicSettings.SetFocusPointForFrame(position, normal);
}

Not

Yukarıdaki basit kod, odaklanmış nesne kullanıcının arkasında olursa hologram kararlılığını düşürecektir. Genel olarak bir odak noktası belirtmek yerine Derinlik Arabelleği Paylaşımını Etkinleştir ayarını öneririz.

Sonraki Geliştirme Denetim Noktası

Burada ortaya konan Unity geliştirme yolculuğunu takip ediyorsanız Karma Gerçeklik platformu özelliklerini ve API'lerini keşfetmenin tam ortasındayız demektir. Buradan bir sonraki konuya devam edersiniz:

Veya doğrudan uygulamanızı bir cihaza veya öykünücüye dağıtmaya atlayın:

Unity geliştirme denetim noktalarına her zaman geri dönabilirsiniz.

Ayrıca bkz.