Aracılığıyla paylaş


Ek noktaları

Her şeyden önce, Dünya Kilitleme Araçları kararlı bir dünya kilitli koordinat sistemi sağlar: dünya kilitli alanı. Bu alan, fiziksel dünyaya göre mümkün olduğunca sabit kalır. Ve dünya kilitli alanı içindeki nesneler, diğer sanal nesnelere göreli yerleşimi koruma, doğal fizik yasalarının simülasyonu, kinematikler ve diğer animasyon teknikleri gibi kararlı bir referans çerçevesi gerektiren özelliklere sahiptir.

Aslında, uygulamanın ihtiyaçlarına bağlı olarak, dünya kilitli alanı bazı veya tüm sahne içeriği için yeterli olabilir.

Ancak, dünya kilitli alanı fiziksel alanla en uygun şekilde hizalanmış olarak kalacak olsa da, daha sonra açıklanması gereken durumlar vardır ki, dünya kilitli alanında birden çok noktanın hem ortak koordinat uzaylarında sabit hem de fiziksel dünyadaki başvuru noktalarına göre sabit kalmasının mümkün olmadığı durumlar vardır.

Önemsiz ama aydınlatıcı bir örnek için, algılayıcının bir tutturucuyu konuma (3,0,0) ve diğerini konuma (-3,0,0) eşlediğini varsayalım. Daha sonra, algılayıcı iyileştirmeleri işlenirken, iki koordinatın (3,0,0) ve (-2,0,0) olması gerektiği belirlendi. İki tutturucu arasındaki altı metrelik mesafeyi beş metre uzaklığa dönüştürecek şekilde kameraya uygulanabilecek bir döndürme ve uzaklık olmadığı açıktır.

Unity'nin uzamsal bağlantı sistemini kullanarak iki yer işareti sessizce yeni taranan konumlarına taşınır.

Ancak Dünya Kilitleme Araçları, dünya kilitli alanında hareket etmeyen nesnelerin "çoğunlukla" hiçbir zaman hareket etmeyeceğini garanti eder. Ve aslında, her hareket sahip olan uygulamaya aittir.

Bir diğer yaygın "anormal" durum da izleme kaybıdır. İzleme bir ortamda kaybolduğunda (örneğin, oda) ve başka bir ortamda yeniden kazanıldığında, ilk başta iki boşluğu bağlayan bir bilgi yoktur. Bir boşluktaki koordinatlar, diğer boşluktaki koordinatlara göre anlamsızdır. Ek noktası paradigması, uygulamanın eski alan hakkındaki uzamsal bilgiler bilinmediğinde (örneğin, bu eski boşluktaki nesneleri gizleyerek) ilk aşamayı düzgün bir şekilde işlemesine ve iki boşluk arasındaki uzamsal ilişki bilindiğinde kurtarılmasına olanak tanır.

Bu özel koşullar ve WLT'nin bunları işlemek için gerçekleştirdiği yeniden sığdırma işlemleri hakkında daha fazla tartışma bulunabilir. Buradaki tartışma, WLT ile uygulama arasındaki sözleşmeye ve bu tür koşulların sorunsuz bir şekilde çözülmesine odaklanmıştır.

Ek noktaları, bu sözleşmenin World Locking Tools ile uygulama arasındaki birleşimidir. Uygulama, World Locking Tools API'lerini kullanarak ek noktaları oluşturur ve konumlandırmaktadır. Bir ek noktasının konumundaki bir düzeltme bir yeniden sığdırma işlemiyle belirlendiğinde, uygulama ek noktasını fiziksel alanda eski konumunda tutacak olan dünya kilitli alanında yeni konumun geri çağrıları yoluyla bildirilir.

Dünya Kilitleme Araçları ek noktalarının çözüm olabileceği bazı senaryolar:

  • Fiziksel dünyadaki özelliklere göre sabit kalmak, diğer sanal nesnelere göre daha önemlidir.
  • Nesneler, tasarım zamanında Unity yerine çalışma zamanında dünyaya yerleştirilir ve izlemedeki kesintilerle ayrılmış göreli konumları uzlaştırmanız önemli olabilir (bkz. parçaların tartışması).
  • Fiziksel alan konumlandırmasının geçerliliğine göre bir nesnenin görünürlüğünü yönetmek önemlidir.

Ek noktalarını kullanma

Ek noktalarının kullanımı oldukça basittir.

İstemci sorumlulukları

Gereken her ek noktası için istemcinin şunları yapması gerekir:

  1. Sistemden ek noktaları isteme. Bkz. CreateAttachmentPoint
  2. Artık gerekli olmayan ek noktalarını atın. Bkz. ReleaseAttachmentPoint
  3. Ek noktasının ilk konumunun ve hareketinin sistemini harekete geçirin. Bkz . CreateAttachmentPoint, MoveAttachmentPoint ve TeleportAttachmentPoint
  4. Yeniden sığdırma işlemi olaylarını işleme. Aşağıya bakın.

Dünya Kilitleme Araçları sorumlulukları

World Locking Tools, aşağıdakilerden biri gerçekleştiğinde etkilenen her ek noktası için uygulamayı bilgilendirir:

  1. Ek noktasının fiziksel dünya izlemesinin geçerliliği değişir.
  2. Dünya kilitli alanda koordinatları, parça birleştirme veya yeniden çözme gibi bir yeniden sığdırma işlemi nedeniyle değişir.

Bu bildirimler, uygulamanın ek noktasının oluşturulmasında WorldLockingManager'a devredildiği temsilciler aracılığıyla yayınlanıyor.

Bu bildirimlerin en iyi şekilde nasıl işleneceğinin her biri kendi dikkate alınacak noktalarına sahip olacağı için uygulamaya bırakılır. Dahili olarak kullanılan ve olduğu gibi veya özel uygulamalar için başlangıç noktası olarak kullanılabilen örnek işleyiciler sağlanır.

Örnek uygulamalar

Fiziksel dünyada sabit kalacak ve izleme geçerli olmadığında içeriğini gizlemesi gereken bir ek noktası için AdjusterFixed, HandleAdjustState üyesiyle AdjustStateDelegate ve HandleAdjustLocation üyesiyle AdjustLocationDelegate'i uygular. Nesneleri taşımak için benzer bir bileşen AdjusterMoving'dedir.

Bu temsilcilerden birini veya ikisini birden sağlamanın isteğe bağlı olduğunu ve aslında durum ve konum değişikliklerine tepkilerin olaylar yerine yoklama temelinde uygulanabileceğini belirtmek önemlidir. Ancak uygulamanın özellikleri nedeniyle kullanımları imkansız olmadığı sürece, temsilcileri kullanan olay tabanlı sistem çok daha verimli bir uygulama oluşturur.

AdjusterFixed bileşeni (veya çok benzer AdjusterMoving) ile başlamanızı ve HandleAdjustLocation ve HandleAdjustState işleyicilerini uygulama gereksinimlerinize uyacak şekilde değiştirmenizi öneririz.

Ayrıca bkz.