Sınırlayıcı kutu

Sınırlayıcı kutu

Not

Sınırlayıcı kutu kullanım dışıdır ve yerine gelen sınırları denetimiyle değiştirilir. Mevcut oyun nesnelerini yükseltmek için geçiş seçeneklerilerinden birini kullanın.

BoundingBox.csBetik, karma gerçeklikte nesneleri dönüştürmek için temel işlevler sağlar. Sınırlayıcı kutu, hologram etrafında bir küp gösterir ve bu küple etkileşim kurabilirsiniz. Küpün köşelerinde ve kenarlarında yer alan tutamaçlar nesneyi ölçeklendirmeye veya döndürmeye olanak sağlar. Sınırlayıcı kutu, kullanıcı girişine de tepki sağlar. Örneğin HoloLens 2'de sınırlayıcı kutu parmak yakınlığıyla 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.

Daha fazla bilgi için bkz. Sınırlayıcı kutu ve Uygulama çubuğu Windows Geliştirme Merkezi.

Örnek sahne

Sınırlayıcı kutu yapılandırmalarının örneklerini sahnede BoundingBoxExamples bulabilirsiniz.

Sınırlayıcı Kutu Örnekleri

Unity Inspector kullanarak sınırlayıcı kutu ekleme ve yapılandırma

  1. Bir nesneye Box Collider ekleme
  2. Bir BoundingBox nesneye betik atama
  3. 'Etkinleştirme' yöntemleri gibi seçenekleri yapılandırma (aşağıdaki Denetçi özellikleri bölümüne bakın)
  4. (İsteğe bağlı) 2 stil sınırlayıcı kutu için önceden HoloLens ve malzemeleri atama (aşağıdaki Tanıtıcı stilleri bölümüne bakın)

Not

Birden çok alt bileşenesahip nesnede belirli bir nesneyi ve harmanlayıcıyı atamak için denetçide Hedef Nesne ve Sınırları Geçersiz Kılma alanını kullanın.

Sınırlayıcı Kutu 1

Kodda sınırlayıcı kutu ekleme ve yapılandırma

  1. Küp GameObject örneği oluşturma

    GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
    
  2. BoundingBoxAddComponent () kullanarak harmanlayıcı ile bir nesneye betik <> atama

    private BoundingBox bbox;
    bbox = cube.AddComponent<BoundingBox>();
    
  3. Seçenekleri yapılandırma (aşağıdaki Denetçi özellikleri bölümüne bakın)

    // Make the scale handles large
    bbox.ScaleHandleSize = 0.1f;
    // Hide rotation handles
    bbox.ShowRotationHandleForX = false;
    bbox.ShowRotationHandleForY = false;
    bbox.ShowRotationHandleForZ = false;
    
  4. (İsteğe bağlı) 2 stil sınırlayıcı kutu için HoloLens ve malzemeleri attayabilirsiniz. Malzemeler ve önfazlar dinamik olarak yüklendiğinden, bu yine de denetçi aracılığıyla atama gerektirir.

Not

Gölgelendirici permütasyonları çalışma zamanında eksik olduğu için Unity'nin 'Resources' klasörünü veya Shader.Find'un dinamik olarak yükleme gölgelendiricileri için kullanılması önerilmez.

bbox.BoxMaterial = [Assign BoundingBox.mat]
bbox.BoxGrabbedMaterial = [Assign BoundingBoxGrabbed.mat]
bbox.HandleMaterial = [Assign BoundingBoxHandleWhite.mat]
bbox.HandleGrabbedMaterial = [Assign BoundingBoxHandleBlueGrabbed.mat]
bbox.ScaleHandlePrefab = [Assign MRTK_BoundingBox_ScaleHandle.prefab]
bbox.ScaleHandleSlatePrefab = [Assign MRTK_BoundingBox_ScaleHandle_Slate.prefab]
bbox.ScaleHandleSize = 0.016f;
bbox.ScaleHandleColliderPadding = 0.016f;
bbox.RotationHandleSlatePrefab = [Assign MRTK_BoundingBox_RotateHandle.prefab]
bbox.RotationHandleSize = 0.016f;
bbox.RotateHandleColliderPadding = 0.016f;

Örnek: MinMaxScaleConstraint kullanarak minimum, maksimum sınırlayıcı kutu ölçeğini ayarlama

Minimum ve maksimum ölçeği ayarlamak için MinMaxScaleConstraint kullanın. MinMaxScaleConstraint'i kullanarak için en düşük ve en yüksek ölçeği de ManipulationHandler kullanabilirsiniz.

GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
bbox = cube.AddComponent<BoundingBox>();
// Important: BoundingBox creates a scale handler on start if one does not exist
// do not use AddComponent, as that will create a  duplicate handler that will not be used
MinMaxScaleConstraint scaleConstraint = bbox.gameObject.GetComponent<MinMaxScaleConstraint>();
scaleConstraint.ScaleMinimum = 1f;
scaleConstraint.ScaleMaximum = 2f;

Örnek: Oyun nesnesinin etrafına sınırlayıcı kutu ekleme

Nesnenin çevreye sınırlayıcı bir kutu eklemek için buna bir BoundingBox bileşen eklemeniz gerekir:

private void PutABoxAroundIt(GameObject target)
{
   target.AddComponent<BoundingBox>();
}

Denetçi özellikleri

Hedef nesne

Bu özellik, sınırlayıcı kutu işlemesi tarafından hangi nesnenin dönüştürülecek olduğunu belirtir. Hiçbir nesne ayarlanmasa sınırlayıcı kutu varsayılan olarak sahip nesnesine ayarlanır.

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

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

Etkinleştirme davranışı

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

  • Başlatmada Etkinleştir:Sahne başlatıldıktan sonra sınırlayıcı kutu görünür duruma gelir.
  • Yakınlık IleEtkinleştir: Sınırlayıcı kutu, nesnenin yakınında bulunan bir el olduğunda görünür hale gelir.
  • İşaretçiyeGöre Etkinleştir: Sınırlayıcı kutu, bir el grafisi işaretçisi tarafından hedefli olduğunda görünür hale gelir.
  • Elle Etkinleştir:Sınırlayıcı kutu otomatik olarak görünür olmaz. BoundingBox.Active özelliğine erişerek bir betik aracılığıyla el ile etkinleştirebilirsiniz.

En düşük ölçeklendirme

İzin verilen minimum ölçek. Bu özellik kullanım dışıdır ve bir betik eklemek tercih MinMaxScaleConstraint edilir. Bu betik eklenirse, sınırlayıcı kutudan değil, en küçük ölçek bu betikten alınır.

En yüksek ölçeklendirme

İzin verilen maksimum ölçek. Bu özellik kullanım dışıdır ve bir betik eklemek tercih MinMaxScaleConstraint edilir. Bu betik eklenirse sınırlayıcı kutudan değil, en büyük ölçek bu betikten alınır.

Kutu görüntüleme

Çeşitli sınırlayıcı kutu görselleştirme seçenekleri.

Düz Eksen Otomatik'i Düzle olarak ayarlanırsa,betik eksende en küçük uzantıyla işlemeye izin vezne olur. Bu, genellikle ince nesneler için kullanılan bir 2D sınırlayıcı kutuyla sonuç verir.

Handles

Tanıtıcı stilini geçersiz kılmak için malzemeyi ve prefab'i attayarak. Hiçbir tanıtıcı atanmamışsa, bunlar varsayılan stilde görüntülenir.

Ekinlikler

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

  • Döndürme Başlatıldı:Döndürme başladığında başlatıldı.
  • Döndürme Sona Erdi:Döndürme sona erdiğinde döndürülür.
  • Ölçek Başlatıldı:Ölçeklendirme başladığında başlatılır.
  • Ölçek SonaErdi: Ölçeklendirme sona erdiğinde başlar.
Ekinlikler

Stilleri işleme

Varsayılan olarak, yalnızca betiği BoundingBox.cs atadığınız zaman, 1. nesil HoloLens tanıtıcısı gösterir. 2 HoloLens tanıtıcıyı kullanmak için uygun tanıtıcı ön fiillerini ve malzemelerini atamalısiniz.

Sınırlayıcı Kutu Tanıtıcı stilleri

Aşağıda, 2 stil sınırlayıcı kutu tutamaçları için önceden HoloLens, malzemeler ve ölçeklendirme değerleri verilmiştir. Bu örneği sahnede BoundingBoxExamples bulabilirsiniz.

HandStyles 2

Tanıtıcılar (2 HoloLens için kurulum)

  • Handle Material: BoundingBoxHandleWhite.mat
  • Ele Geçirildi Malzeme:BoundingBoxHandleBlueGrabbed.mat
  • Ölçek Tanıtıcısı Prefab:MRTK_BoundingBox_ScaleHandle.prefab
  • Ölçek Tanıtıcısı Kayrak Prefab:MRTK_BoundingBox_ScaleHandle_Slate.prefab
  • Ölçek Tanıtıcısı Boyutu:0,016 (1,6cm)
  • Ölçek Tutamaç Collider Doldurma:0,016 (elelanabilir harmanlayıcıyı tanıtıcı görselden biraz daha büyük yapar)
  • 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 TutamaçLı Harmanlayıcı Doldurma:0,016 (elelanabilir işlenebilir harmanlayıcıyı tanıtıcı görselden biraz daha büyük yapar)

Yakınlık (2 HoloLens kurulum)

Ellere olan mesafeye göre animasyon ile tutamaçları gösterme ve gizleme. İki adımlı ölçeklendirme animasyonu vardır.

Yakınlık
  • Yakınlık Etkisi Etkin:Yakınlık tabanlı tanıtıcı etkinleştirmeyi etkinleştirme
  • Orta YakınlığıEle: 1. adım ölçeklendirme için uzaklık
  • Yakınlığı Ele:2. adım ölçeklendirme için uzaklık
  • Uzak Ölçek:El sınırlayıcı kutu etkileşimini (yukarıda 'Orta Yakınlığı Kaldır' ile tanımlanan mesafe) aralığın dışında olduğunda tanıtıcı varlığın varsayılan ölçek değeri. Varsayılan olarak tanıtıcıyı gizlemek için 0 kullanın)
  • Orta ölçekli: eller sınırlama kutusu 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)

Düzenleme işleyicisiyle bir nesneyi taşınabilir hale getirme

Bir sınırlayıcı kutu, en çok ManipulationHandler.cs etkileşim kullanılarak nesneyi taşınabilir hale getirmek için ile birleştirilebilir. 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.

İşleme Işleyicisi

Sınırlayıcı kutu kenarlarının, en çok etkileşimi kullanılarak taşınırken aynı şekilde davranması için ManipulationHandler , ManipulationHandler / / BoundingBox.HighlightWires / BoundingBox.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.

Sınırlar denetimine geçme

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