Sınır denetimi

Sınır denetimi

BoundsControl, daha önce BoundingBox içinde bulunan işleme davranışı için yeni bileşendir. Sınır denetimi, kurulumda bir dizi geliştirme ve basitleştirme yapar ve yeni özellikler ekler. Bu bileşen sınırlayıcı kutunun yerine geçerek kullanım dışıdır.

BoundsControl.csBetik, karma gerçeklikte nesneleri dönüştürmek için temel işlevler sağlar. Sınır denetimi, hologram etrafında bir kutu gösterir ve bu kutuyla etkileşim kurabilirsiniz. Kutunun köşelerinde ve kenarlarında yer alan tutamaçlar nesneyi ölçeklendirmeye, döndürmeye veya çeviriye olanak sağlar. Sınır denetimi ayrıca kullanıcı girişine tepki de eder. Örneğin HoloLens 2' de sınır denetimi parmak yakınlıklarına yanıt verir ve nesneden uzaklığı algılamaya yardımcı olmak için görsel geri bildirim sağlar. Tüm etkileşimler ve görseller kolayca özelleştirilebilir.

Örnek sahne

Sahnede sınır denetimi yapılandırmalarının örneklerini BoundsControlExamples bulabilirsiniz.

Sınır denetimi Örneği

Denetçi özellikleri

Hedef nesne

Bu özellik, hangi nesnenin sınır denetimi işlemesi tarafından dönüştürülecek olduğunu belirtir. Herhangi bir nesne ayarlanmasa varsayılan olarak sahip nesnesi kullanılır.

Etkinleştirme davranışı

Sınır denetimi arabirimini etkinleştirmek için çeşitli seçenekler vardır.

  • Başlangıç: Sahnebaşlatıldıktan sonra Sınır denetimi görünür duruma gelir.
  • Yakınlık IleEtkinleştir: Sınır denetimi, ifade el nesneye yakın olduğunda görünür hale gelir.
  • İşaretçiyeGöre Etkinleştir: Bir el grafisi işaretçisi tarafından hedeflense sınır denetimi görünür hale gelir.
  • Yakınlık ve İşaretçiyeGöre Etkinleştir: Bir el grafisi işaretçisi tarafından hedefleneken veya ifadeli bir el nesneye yakın olduğunda sınır denetimi görünür hale gelir.
  • El ile Etkinleştir:Sınır denetimi otomatik olarak görünür olmaz. boundsControl.Active özelliğine erişerek bir betik aracılığıyla el ile etkinleştirebilirsiniz.

Sınırları geçersiz kılma

Sınır hesaplaması için nesneden bir kutu harmanlayıcı ayarlar.

Kutu doldurma

Denetimin kapsamlarını hesaplamak için kullanılan harmanlayıcı sınırlarına bir doldurma ekler. Bu yalnızca etkileşimi değil, aynı zamanda görselleri de etkiler.

Ekseni düzle

Denetimin eksenlerden biri üzerinde düz hale getirerek 2 boyutlu olup olmadığını ve eksen üzerinde işlemeye izin vermeyip bırakmayıp bırakması olduğunu gösterir. Bu özellik, kaynıyor gibi ince nesneler için kullanılabilir. Düz eksen Düzle Otomatik olarak ayarlanırsa betik, en küçük uzantıyı düz eksen olarak otomatik olarak seçer.

Yumuşatma

Düzgünleştirme bölümü, denetimin ölçeği ve döndürmesi için düzgünleştirme davranışını yapılandırmaya olanak sağlar.

Görseller

Sınır denetimi görünümü, karşılık gelen görsel yapılandırmalarından biri değiştirerek yalıt edilebilir. Görsel yapılandırmalar bağlantılı veya inlined betiklenebilir nesnelerdir ve yapılandırma nesnesi bölümünde daha ayrıntılı olarak açıklanmıştır.

Yapılandırma Nesneleri

Denetim, betiklenebilir nesneler olarak depolanabilir ve farklı örnekler veya öncedenfazlar arasında paylaşılabilir bir dizi yapılandırma nesnesiyle birlikte gelir. Yapılandırmalar, tek tek betiklenebilir varlık dosyaları veya önfazlaların içinde iç içe geçmiş betiklenebilir varlıklar olarak paylaşılabilir ve bağlanılabilir. Ek yapılandırmalar, dış veya iç içe geçmiş betiklenebilir bir varla bağlantı olmadan doğrudan örnekte de tanımlanabilir.

Sınır denetimi denetçisi, özellik denetçisinde bir ileti göstererek geçerli örneğin parçası olarak bir yapılandırmanın paylaşılır mı yoksa altı çizili mi olduğunu gösterir. Buna ek olarak paylaşılan örnekler doğrudan sınır denetimi özellik penceresinin kendisinde düzenlenemez, bunun yerine paylaşılan yapılandırmalarda yanlışlıkla yapılan değişikliklerden kaçınmak için bağlantı vermekte olduğu varlığın doğrudan değiştirilebilir olması gerekir.

Şu anda sınır denetimi aşağıdaki özellikler için yapılandırma nesneleri seçenekleri sunar:

Box yapılandırması

Kutu yapılandırması, harmanlayıcı boyutu ve kutu doldurma yoluyla tanımlanan sınırları olan düz bir kutu işlemeden sorumludur. Aşağıdaki özellikler ayar olabilir:

  • Kutu malzemeleri:Hiçbir etkileşim meydana geldiğinde işlenmiş kutuya uygulanan malzemeyi tanımlar. Kutu yalnızca bu malzeme ayarlanırsa işlenir.
  • Kutu ele geçirildi malzemeleri:Kullanıcı, yakın veya uzak etkileşim yoluyla denetimle etkileşim kurduğunda kutunun malzemeleri.
  • Düz eksen görüntüleme ölçeği:Eksenlerden biri düzse kutu görüntüsüne uygulanan bir ölçek.

Ölçek tanıtıcıları yapılandırması

Bu özellik çekmecesi, sınır denetimi ölçek tutamaçlarının davranışını ve görselleştirmesini değiştirmenizi sağlar.

  • Malzeme işleme:Tanıtıcılara uygulanan malzeme.
  • Ele geçirildi malzemeyiişleme: Ele geçirildi tanıtıcıya uygulanan malzeme.
  • Önceden işleme: Ölçektanıtıcısı için isteğe bağlı önfazla. Ayarsız ise MRTK varsayılan olarak bir küp kullanır.
  • Tanıtıcı boyutu:Ölçek tutamacı boyutu.
  • Collider doldurma:tanıtıcı harmanlayıcıya eklemek için doldurma.
  • 'i işlerkentether çizin: etkin olduğunda, etkileşimin başlangıç noktasından geçerli el veya işaretçi konuma bir tether çizgisi çizin.
  • Tanıtıcılar harmanlayıcıyıyoksayar: Bir harmanlayıcı buraya bağlanıyorsa, tanıtıcılar bu harmanlayıcıyla çakışmaları yoksayar.
  • Kayarak önceden işleme:denetim düz olduğunda tanıtıcı için kullanmak üzere prefab.
  • Ölçek tanıtıcılarını göster:tanıtıcının görünürlüğünü kontrol eder.
  • Ölçeklendirme davranışı:tekdüz veya tekdüz olmayan ölçeklendirme olarak ayarlanmalı.

Döndürme tanıtıcıları yapılandırması

Bu yapılandırma, döndürme tanıtıcısı davranışını tanımlar.

  • Malzeme işleme:Tanıtıcılara uygulanan malzeme.
  • Ele geçirildi malzemeyiişleme: Ele geçirildi tanıtıcıya uygulanan malzeme.
  • Önfazla işleme:tanıtıcı için isteğe bağlı önfazla. Ayarsız ise MRTK, varsayılan olarak bir küre kullanır.
  • Tanıtıcı boyutu:tanıtıcının boyutu.
  • Collider doldurma:tanıtıcı harmanlayıcıya eklemek için doldurma.
  • 'i işlerkentether çizin: etkin olduğunda, etkileşimin başlangıç noktasından geçerli el veya işaretçi konuma bir tether çizgisi çizin.
  • Tanıtıcılar harmanlayıcıyıyoksayar: Bir harmanlayıcı buraya bağlanıyorsa, tanıtıcılar bu harmanlayıcıyla çakışmaları yoksayar.
  • Oluşturulan tanıtıcı ile kullanılacak önceden oluşturulmuşharmanlayıcı türü: harmanlayıcı türünü işle.
  • X için tanıtıcıyıgöster: X ekseni için tanıtıcının görünürlüğünü kontrol eder.
  • Y için tanıtıcıyıgöster: Y ekseni için tanıtıcının görünürlüğünü kontrol eder.
  • Z için tanıtıcıyıgöster: Z ekseni için tutamacın görünürlüğünü kontrol eder.

Çeviri tanıtıcıları yapılandırması

Sınır denetimi için çeviri tanıtıcılarını etkinleştirmeye ve yapılandırmaya olanak sağlar. Çeviri tanıtıcıların varsayılan olarak devre dışı bırakılmıştır.

  • Malzeme işleme:Tanıtıcılara uygulanan malzeme.
  • Ele geçirildi malzemeyiişleme: Ele geçirildi tanıtıcıya uygulanan malzeme.
  • Önfazla işleme:tanıtıcı için isteğe bağlı önfazla. Ayarsız ise MRTK, varsayılan olarak bir küre kullanır.
  • Tanıtıcı boyutu:tanıtıcının boyutu.
  • Collider doldurma:tanıtıcı harmanlayıcıya eklemek için doldurma.
  • Düzenleme sırasında Tether çiz: etkin olduğunda, bir yandan geçerli el veya işaretçi konumuna etkileşim başlangıcını gösteren bir çizgi çizecek.
  • Handles Ignore Collider: bir Collider buraya bağlanalırsa, tutamaçlar bu Collider ile çakışmayı yoksayar.
  • Oluşturulan tanıtıcıyla birlikte kullanılacak prefab Collider Type: Collider türünü işleyin.
  • X için tutamacı göster: x ekseni tanıtıcısının görünürlüğünü denetler.
  • Y için tanıtıcıyı göster: y ekseni tutamacının görünürlüğünü denetler.
  • Z için tanıtıcıyı göster: z ekseni tutamacının görünürlüğünü denetler.

Bağlantılar yapılandırması, sınır denetiminin tel kafes özelliğini sunar. Aşağıdaki özellikler yapılandırılabilir:

  • Tel çerçeve malzemeleri: tel kafes ağı 'na uygulanan malzeme.
  • Tel çerçeve sınır yarıçapı: tel kafes kalınlığı.
  • Tel çerçeve şekli: tel kafes şekli, üçüncü dereceden veya silindirik olabilir.
  • Tel kafes göster: tel kafes görünürlüğünü denetler.

Yakınlık etkisi yapılandırması

Tutamaçları, uygulamalı mesafeye göre animasyonlarla gösterin ve gizleyin. İki adımlı ölçeklendirme animasyonuna sahiptir. varsayılanlar HoloLens 2 stili davranış olarak ayarlanır.

Sınır denetimi yakınlığı
  • Yakınlık etkisi etkin: yakınlık tabanlı tanıtıcı etkinleştirmesini etkinleştirin
  • Nesne Orta yakınlık: 1. adım ölçeklendirmesinin uzaklığı
  • Nesne yakınlığı: 2. adım ölçekleme uzaklığı
  • Uzak ölçek: nesnelerin sınır denetim etkileşimi aralığının dışında olması durumunda tanıtıcı varlığın varsayılan ölçeklendirme değeri (' orta düzey yakınlık ' ile yukarıda tanımlanan mesafe). Varsayılan olarak tanıtıcıyı gizlemek için 0 kullanın)
  • Orta ölçekli: eller sınır denetim etkileşimi aralığı içinde olduğunda, işleme varlığının ölçeği değeri (yukarıda ' tanıtıcı Close yakınlığı ' ile tanımlanan mesafe). Normal boyutu göstermek için 1 kullanın)
  • Ölçeği kapat: eller, elde edilen etkileşimin aralığı içinde olduğunda, işleme varlığının ölçeği değeri (yukarıda ' Işleç Close yakınlığı ' ile tanımlanan mesafe). Daha büyük boyutu göstermek için 1. x kullanın)
  • En fazla büyüme oranı: bir yakınlık, orta veya en çok yakınlığa geldiğinde, ölçeklenmiş bir nesne ölçeklenmesini derecelendirin.
  • Orta büyüme oranı: iz, ortasından yakınlığa yaklaştığında bir yakınlık ölçeği oranını derecelendirin.
  • Büyüme oranını kapat: el yakınından nesne merkezine yaklaştığında bir yakınlık ölçeklendirilen nesne ölçeklenmesini değerlendirin.

Kısıtlama sistemi

Sınır denetimi, sınır denetim tutamaçları kullanılırken çeviri, döndürme veya ölçekleme davranışını sınırlamak veya değiştirmek için Kısıtlama Yöneticisi 'nin kullanılmasını destekler.

Özellik denetçisi, seçili kısıtlama yöneticisini kaydırma ve vurgulama seçeneği içeren bir açılan menüdeki aynı oyun nesnesine bağlı olan tüm kullanılabilir kısıtlama yöneticilerini gösterir.

Sınır denetim kısıtlamaları

Ekinlikler

Sınır denetimi aşağıdaki olayları sağlar. Bu örnek, sesli geri bildirim çalmak için bu olayları kullanır.

  • Döndürme başlatıldı: döndürme başladığında tetiklenir.
  • Döndürme durduruldu: döndürme durduğunda tetiklenir.
  • Ölçek başlatıldı: ölçekleme başladığında ateşlenir.
  • Ölçek durduruldu: ölçekleme durduğunda ateşlenir.
  • Çeviri başlatıldı: çeviri başladığında ateşlenir.
  • Çevirme durdu: çeviri durduğunda ateşlenir.
Sınır denetim olayları

Elastik (deneysel)

Elastik, nesneleri sınırlar denetimi aracılığıyla düzenleme sırasında kullanılabilir. Elastik sisteminin hala deneysel durumunda olduğunu unutmayın. Elastik ' i etkinleştirmek için, mevcut bir elastik Manager bileşenini bağlayın ya da düğme aracılığıyla yeni bir elastik Yöneticisi oluşturun ve bağlayın Add Elastics Manager .

Sınır denetimi elastik

Tanıtıcı stilleri

varsayılan olarak, yalnızca BoundsControl.cs betiği atadığınızda, HoloLens 1. gen stilinin tanıtıcısını gösterir. HoloLens 2 stil tutamaçlarını kullanmak için, uygun tanıtıcı ön ve malzemeleri atamanız gerekir.

Sınır denetim tutamacı stilleri 2

aşağıda, HoloLens 2 stil sınırları denetim tutamaçları için prefabs, malzemeler ve ölçekleme değerleri verilmiştir. Bu örneği BoundsControlExamples sahnede bulabilirsiniz.

Sınır denetimi HandleStyles

Handles (HoloLens 2 stili için kurulum)

  • Işleme malzemeleri: boundingboxhandlewhite. vade
  • Tanıtıcı Iş malzemesi: boundingboxhandlebluegrabbed. vade
  • Ölçek tanıtıcısı prefab: MRTK_BoundingBox_ScaleHandle. prefab
  • Ölçek tutamacı kurşun prefab: MRTK_BoundingBox_ScaleHandle_Slate. prefab
  • Ölçek tanıtıcısı boyutu: 0,016 (1.6 cm)
  • Ölçek tutamacı Collider Padding: 0,016 (bbable Collider biraz daha büyük olur.
  • Döndürme tanıtıcısı prefab: MRTK_BoundingBox_RotateHandle. prefab
  • Döndürme tanıtıcısı boyutu: 0,016
  • Döndürme tutamacı Collider dolgusu: 0,016 (grabbable Collider biraz daha büyük olur ve görseli işleme)

Nesne işleyicisi ile dönüşüm değişiklikleri

Bir sınır denetimi, ObjectManipulator.cs belirli türde işleme sağlamak için ile birlikte kullanılabilir (örn. nesneler, tutamaçları kullanmadan taşınıyor. Düzenleme işleyicisi hem bir hem de iki elli etkileşimi destekler. El ile izleme , bir nesneyle etkileşim kurmak için kullanılabilir.

Sınır denetim nesnesi Işleyicisi

Sınır denetim kenarlarının, en çok etkileşimi kullanılarak taşınırken aynı şekilde davranması için ObjectManipulator , ObjectManipulator / / BoundsControl.HighlightWires / BoundsControl.UnhighlightWires Yukarıdaki ekran görüntüsünde gösterildiği gibi, düzenleme sırasında yapılan işleme için olaylarının, sırasıyla sıraya bağlanması önerilir.

Unity denetçisi kullanarak bir sınır denetimi ekleme ve yapılandırma

  1. Bir nesneye Box Collider ekleme
  2. BoundsControlBir nesneye betik atama
  3. ' Activation ' yöntemleri gibi seçenekleri yapılandırın (aşağıdaki Inspector özellikleri bölümüne bakın)
  4. Seçim HoloLens 2 stil sınırları denetimi için ön fabs ve malzemeler atama (aşağıdaki işleme stilleri bölümüne bakın)

Not

Birden çok alt bileşeni olan nesneye belirli nesne ve Collider atamak için Inspector 'daki hedef nesne ve sınır geçersiz kılma alanını kullanın.

Sınır denetimi

Kodda sınır denetimi ekleme ve yapılandırma

  1. Küp Oyunnesnesi örneği oluştur

    GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
    
  2. BoundsControlAddComponent () kullanarak Collider ile bir nesneye betik atama <>

    private BoundsControl boundsControl;
    boundsControl = cube.AddComponent<BoundsControl>();
    
  3. Seçenekleri doğrudan denetimde veya komut dosyası yapılandırmalardan biri aracılığıyla yapılandırın (aşağıdaki Inspector özellikleri ve Konfigürasyonlar bölümüne bakın)

    // Change activation method
    boundsControl.BoundsControlActivation = BoundsControlActivationType.ActivateByProximityAndPointer;
    // Make the scale handles large
    boundsControl.ScaleHandlesConfig.HandleSize = 0.1f;
    // Hide rotation handles for x axis
    boundsControl.RotationHandlesConfig.ShowRotationHandleForX = false;
    
  4. Seçim HoloLens 2 stil sınırları denetimi için ön fabs ve malzemeler atayın. Malzemeler ve Prefabs 'lerin dinamik olarak yüklenmesi gerektiğinden, bu, denetleyici aracılığıyla atamalar gerektirir.

Not

Unity 'nin ' Resources ' klasörü veya gölgelendiricisi kullanılıyor. çalışma zamanında gölgelendirici permütasyon eksik olabileceğinden, dinamik olarak yükleme gölgelendiricileri için bulma önerilmez.

BoxDisplayConfiguration boxConfiguration = boundsControl.BoxDisplayConfig;
boxConfiguration.BoxMaterial = [Assign BoundingBox.mat]
boxConfiguration.BoxGrabbedMaterial = [Assign BoundingBoxGrabbed.mat]
ScaleHandlesConfiguration scaleHandleConfiguration = boundsControl.ScaleHandlesConfig;
scaleHandleConfiguration.HandleMaterial = [Assign BoundingBoxHandleWhite.mat]
scaleHandleConfiguration.HandleGrabbedMaterial = [Assign BoundingBoxHandleBlueGrabbed.mat]
scaleHandleConfiguration.HandlePrefab = [Assign MRTK_BoundingBox_ScaleHandle.prefab]
scaleHandleConfiguration.HandleSlatePrefab = [Assign MRTK_BoundingBox_ScaleHandle_Slate.prefab]
scaleHandleConfiguration.HandleSize = 0.016f;
scaleHandleConfiguration.ColliderPadding = 0.016f;
RotationHandlesConfiguration rotationHandleConfiguration = boundsControl.RotationHandlesConfig;
rotationHandleConfiguration.HandleMaterial = [Assign BoundingBoxHandleWhite.mat]
rotationHandleConfiguration.HandleGrabbedMaterial = [Assign BoundingBoxHandleBlueGrabbed.mat]
rotationHandleConfiguration.HandlePrefab = [Assign MRTK_BoundingBox_RotateHandle.prefab]
rotationHandleConfiguration.HandleSize = 0.016f;
rotationHandleConfiguration.ColliderPadding = 0.016f;

Örnek: MinMaxScaleConstraint kullanarak en küçük, en büyük sınır denetim ölçeğini ayarla

Minimum ve maksimum ölçeği ayarlamak için, MinMaxScaleConstraint denetimenize bir ekleyin. Sınır denetimi otomatik olarak ekler ve kısıtlama yöneticisini etkinleştirir, MinMaxScaleConstraint ve yapılandırıldıktan sonra dönüştürme değişikliklerine otomatik olarak uygulanır.

Ayrıca, için en düşük ve en yüksek ölçeği ayarlamak için MinMaxScaleConstraint kullanabilirsiniz ObjectManipulator .

GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
bcontrol = cube.AddComponent<BoundsControl>();
// Important: BoundsControl creates a constraint manager on start if one does not exist.
// There's no need to manually attach a constraint manager.
MinMaxScaleConstraint scaleConstraint = bcontrol.gameObject.AddComponent<MinMaxScaleConstraint>();
scaleConstraint.ScaleMinimum = 1f;
scaleConstraint.ScaleMaximum = 2f;

Örnek: bir oyun nesnesi etrafında sınır denetimi ekleme

Bir nesnenin etrafına bir sınır denetimi eklemek için buna bir bileşen eklemeniz yeterlidir BoundsControl :

private void PutABoundsControlAroundIt(GameObject target)
{
   target.AddComponent<BoundsControl>();
}

Sınırlayıcı kutudan geçiş

Sınırlayıcı kutuyu kullanan mevcut ön Kullanılanlar ve örnekler, mrtk araçları paketinin bir parçası olan geçiş penceresi aracılığıyla yeni sınırlar denetimine yükseltilebilir.

Her bir sınırlayıcı kutusu örneğini yükseltmek için, bileşenin Özellik denetçisinde bir geçiş seçeneği de vardır.

Sınır denetimi geçişi

Ayrıca bkz.