Sınır denetimi

Sınır denetimi

Boundscontrol , daha önce sıçrama dingbox içinde bulunan, düzenleme davranışı için yeni bileşendir. Sınır denetimi, kurulumda çeşitli geliştirmeler ve basitleştirmeler yapar ve yeni özellikler ekler. Bu bileşen, kullanım dışı bırakılacak olan sınırlayıcı kutunun yerini alır.

BoundsControl.csBetik, karma gerçeklik içindeki nesneleri dönüştürmek için temel işlevleri sağlar. Sınır denetimi, üzerinde bağlantı oluşturabilecek olduğunu göstermek için hologram etrafında bir kutu gösterir. Kutunun köşeleri ve kenarlarındaki tutamaçlar, nesne ölçekleme, döndürme veya çevirme sağlar. Sınır denetimi kullanıcı girişine de yeniden davranır. HoloLens 2 ' de, örneğin sınırlar denetimi parmak yakınlığına yanıt verir ve nesneden uzaklığı belirlemek için görsel geri bildirim sağlar. Tüm etkileşimler ve görseller kolay bir şekilde özelleştirilebilir.

Örnek sahne

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

Bounds control Example

Inspector özellikleri

Hedef nesne

Bu özellik, hangi nesnenin sınır denetim düzenlemesi tarafından dönüştürüleceğini belirtir. Hiçbir nesne ayarlanmamışsa, varsayılan olarak sahip nesnesi olur.

Etkinleştirme davranışı

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

  • Başlangıç sırasında etkinleştir: sahne başladıktan sonra sınır denetimi görünür hale gelir.
  • Yakınlık Ile etkinleştir: bir ifade nesnesi yakınsa, sınır denetimi görünür hale gelir.
  • Işaretçiye göre etkinleştir: sınır denetimi bir el-Ray işaretçisi tarafından hedeflendiğinde görünür hale gelir.
  • Yakınlık ve Işaretçiye göre etkinleştir: sınır denetimi bir el-Ray işaretçisi tarafından hedeflendiğinde veya bir ifade nesnesine yakınsa 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 betiği el ile etkinleştirebilirsiniz.

Sınır geçersiz kılma

Sınır hesaplama için Object öğesinden bir Box Collider ayarlar.

Kutu doldurma

Denetimin kapsamlarını hesaplamak için kullanılan Collider sınırlarına bir doldurma ekler. Bu, yalnızca etkileşimini etkilemez, ancak görselleri de etkiler.

Ekseni Düzleştir

Denetimin eksenlerden birinde düzleştirilerek, 2 boyut haline getirilmesi ve bu eksen üzerinde düzenlemeye izin verip vermemek gerektiğini gösterir. Bu özellik, slates gibi ince nesneler için kullanılabilir. Düzleştirme ekseni Otomatik düzleştir olarak ayarlandıysa, komut dosyası en küçük kapsam olan ekseni düzleştirme ekseni olarak otomatik olarak seçer.

Üstel

Yumuşatma bölümü, denetimin ölçeklendirilmesi ve döndürme için Düzgünleştirme davranışını yapılandırmaya olanak tanır.

Görseller

Sınır denetiminin görünümü, ilgili görsel yapılandırmalarından biri değiştirilerek yapılandırılabilir. Görsel yapılandırmalar bağlantılı veya satır içine alınmış komut dosyalı nesnelerdir ve yapılandırma nesnesi bölümündedaha ayrıntılı olarak açıklanmıştır.

Yapılandırma nesneleri

Denetim, komut dosyalı nesneler olarak depolanabilecek ve farklı örnekler ya da Prefabs arasında paylaşılan bir yapılandırma nesneleri kümesiyle birlikte gelir. Konfigürasyonlar, tek başına komut dosyalı varlık dosyaları ya da Prefabs içinde iç içe geçmiş betik varlıkları olarak paylaşılabilir ve bağlanabilir. Daha fazla yapılandırma ayrıca, dış veya iç içe komut dosyası olmayan bir varlığa bağlanmadan doğrudan örnek üzerinde de tanımlanabilir.

Sınır denetim denetçisi, bir yapılandırmanın Özellik denetçisinde bir ileti göstererek geçerli örneğin bir parçası olarak paylaşılıp paylaşılmadığını veya satır içine alınmış olduğunu gösterir. Ayrıca, paylaşılan yapılandırmalarda yanlışlıkla yapılan değişikliklerden kaçınmak için, buna ek olarak, paylaşılan örneklerin doğrudan sınır denetimi özelliği penceresinde düzenlenememesi gerekir.

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

Box yapılandırması

Box yapılandırması, Collider boyut ve kutu dolgusu aracılığıyla tanımlanan sınırlara sahip katı bir kutuyu işlemenin sorumluluğundadır. Aşağıdaki özellikler ayarlanabilir:

  • Box malzemeleri: hiçbir etkileşim gerçekleşmediğinde işlenen kutuya uygulanan malzemeleri tanımlar. Bir kutu yalnızca bu malzeme ayarlandıysa işlenir.
  • Box-bared malzeme: Kullanıcı, yakalayıp tarafından, yakın veya uzak etkileşim aracılığıyla denetim ile etkileşime geçtiğinde kutu için malzeme.
  • Ekseni Düzleştir görüntü ölçeği: eksenlerden biri düzleştirildiğinde, kutu görüntüsüne uygulanan bir ölçek.

Ölçek tutamaçları yapılandırması

Bu özellik çekmecesi, sınır denetiminin ölçek tanıtıcılarının davranışını ve görselleştirmesini değiştirmeye izin verir.

  • Tanıtıcı malzemeler: Tanıtıcılarda uygulanan malzemeler.
  • İş malzemesini işleme: malzeme, meblaed tanıtıcıya uygulandı.
  • Handle prefab: ölçek tutamacı için isteğe bağlı prefab. Ayarlanmamışsa, MRTK varsayılan olarak bir küp kullanır.
  • Tanıtıcı boyutu: ölçek tutamacının boyutu.
  • Collider Padding: tanıtıcı Collider öğesine 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.
  • İşlem kurşun, denetim düzleştirildiğinde tanıtıcı için kullanılacak ön ceprefab: prefab.
  • Ölçek tutamaçlarını göster: tanıtıcının görünürlüğünü denetler.
  • Ölçek davranışı: Tekdüzen veya Tekdüzen olmayan ölçeklendirmeye ayarlanabilir.

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

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

  • Tanıtıcı malzemeler: Tanıtıcılarda uygulanan malzemeler.
  • İş malzemesini işleme: malzeme, meblaed tanıtıcıya uygulandı.
  • Handle prefab: tanıtıcı için isteğe bağlı prefab. Ayarlanmamışsa, MRTK varsayılan olarak bir Sphere kullanır.
  • Tanıtıcı boyutu: tanıtıcının boyutu.
  • Collider Padding: tanıtıcı Collider öğesine 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.

Çeviri işleme yapılandırması

Sınır denetimi için çeviri tutamaçlarının etkinleştirilmesini ve yapılandırılmasını sağlar. Çeviri tanıtıcılarının varsayılan olarak devre dışı bırakıldığını unutmayın.

  • Tanıtıcı malzemeler: Tanıtıcılarda uygulanan malzemeler.
  • İş malzemesini işleme: malzeme, meblaed tanıtıcıya uygulandı.
  • Handle prefab: tanıtıcı için isteğe bağlı prefab. Ayarlanmamışsa, MRTK varsayılan olarak bir Sphere kullanır.
  • Tanıtıcı boyutu: tanıtıcının boyutu.
  • Collider Padding: tanıtıcı Collider öğesine 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.

Bounds control Proximity
  • 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.

Bounds control Constraints

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.
Bounds control Events

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 .

Bounds control Elastics

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.

Bounds control 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.

Bounds control Object Manipulator

Sınır denetim kenarlarının, en çok etkileşimi kullanılarak taşınırken aynı şekilde davranması için 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.

Bounds control Migrate

Ayrıca bkz.