Genel Bakış
Prag Projesi nedir?
Project Prag, el hareketi girişini temel alan NUI (doğal kullanıcı arabirimi) deneyimleri oluşturmanıza olanak tanıyan bir SDK 'dır (yazılım geliştirme seti). C#, C++ (UWP ve .NET Core tatları dahil) için API'ler (uygulama programlama arabirimleri) sağlayarak kendi özelleştirilmiş el hareketlerinizi kolayca tasarlamanızı ve uygulamanızı ve uygulamalarınızla tümleştirmenizi sağlarız. Bazı el hareketi deneyimlerini keşfetmek ve programlama modelimizi tanımak için GitHub örnekleri depomuzu ziyaret edin.
Hareketin yapı taşları el pozları ve el hareketleridir. Sezgisel bir dilde belirtilen basit kısıtlamaları kullanarak, herhangi bir el pozunu ve istediğiniz el hareketini tanımlamanıza olanak sağlarız. Bir hareket belirtmek için el pozları ve el hareketleri dizisini bir araya getirebilirsiniz. Hareketiniz tanımlanıp çalışma zamanımıza kaydedildikten sonra, kullanıcınızın hareketi kendi eliyle gerçekleştirdiğini her algıladığımızda sizi bilgilendireceğiz. Bu noktada, algılanan harekete yanıt vermek için istenen mantığı çalıştırabilirsiniz.
Project Prag'ı kullanarak kullanıcılarınıza müzik ve video kayıttan yürütmeyi sezgisel olarak kontrol etmek, web içeriğini yer işareti ve beğenmek, anlık ileti (anlık ileti) uygulamalarında emoji göndermek, dijital bir yardımcıyla etkileşim kurmak, PowerPoint slayt gösterileri oluşturmak ve çalıştırmak, üç boyutlu nesneleri işlemek, tek başlarına oyun oynamak ve çok daha fazlasını yapmak için el hareketleri sağlayabilirsiniz.
Prag Projesi ile çalışmaya başlama
Desteklenen derinlik kameraları
Project Prag'ı makinenizde çalıştırmak için bir derinlik kameranız olması gerekir. Şu anda aşağıdaki kamera markalarını destekliyoruz:
Marka | Hareket Algılama Aralığı | Deneyim |
---|---|---|
Intel® RealSense™ SR300 kamera | 20-60 [cm] | En iyi |
Intel® RealSense™ F200 kamera | 20-60 [cm] | İyi |
Windows v2 için Kinect | 60-110 [cm] | İyi |
En iyi performans için Intel® RealSense™ SR300 kamerayı kullanmanızı öneririz.
Donanım ve yazılım gereksinimleri
Project Prag'ı ayarlamaya devam etmeden önce sisteminizin aşağıdaki gereksinimleri karşıladığından emin olun:
Kategori | Önerilen | En az |
---|---|---|
CPU | Intel® Core™ i7 serisi, 8 mantıksal çekirdek | Intel® Core™ i5 serisi, 4 mantıksal çekirdek |
Ücretsiz RAM | 2 GB veya daha fazla | 1 GB |
Operating System | Creator Update'in yüklü olduğu Windows 10 | Windows 10 |
Makinenizde Prag Projesi ayarlama
Project Prag'ın makinenizde çalışmasını sağlamak için yapmanız gerekenler:
Derinlik kameranızı usb 3.0 bağlantı noktasına takın ve aşağıdaki görüntüde gösterildiği gibi bilgisayarınızın monitörünüzün altına yerleştirin:
İndirme ve yüklemeaka.ms/gestures/download'dan Project Prag çalışma zamanı. Yükleme, masaüstünüzde derlenmiş tanıtım uygulamalarımıza işaret eden kısayollar yerleştirir:
Tanıtım uygulamalarımız şunlardır:
Uygulama Description Microsoft.Gestures.Service| [hareket algılama hizmetimizi](getting-started-gestures-service.md) çalıştırırMicrosoft.Gestures.DiscoveryClient| Windows kabuğu, PowerPoint, Skype ve daha fazlası için hareket tümleştirmesi sağlarMicrosoft.Gestures.Camera.Viewer| Kameradan RGB akışını görüntüler ve hareketle tetiklenen ekleme
animasyonlu yer paylaşımlarıKurt gibi| Unity® ile yapılan hareket temelli oyunu çalıştırırYükleme tamamlandığında Microsoft Gestures Service adlı bir pencere açılır. Bu, gerçek zamanlı hareket ve poz algılama panomuzdur. Aşağıda gösterildiği gibi parmaklarınızın başarıyla algılandığından emin olun:
Not
Varsayılan olarak, yalnızca sağ el algılama etkindir. her iki eli de etkinleştirmek için, Hareketler Hizmeti penceresinin Sistem bölümündeki İki eli etkinleştir kutusunu işaretleyin.
Project Prag kurulumunun Aşağıdaki iki uygulamayı Windows başlangıcında başlatılacak ve arka planda çalışacak şekilde yapılandırdığını unutmayın:
- Microsoft.Gestures.Sync - Hareket Hizmeti'ni çalışır durumda tutar ve güncelleştirmeleri yayımladığımızda çeker.
- Microsoft.Gestures.DiscoveryClient - Çeşitli bağlamlar için hareket tümleştirmesi sağlar: Windows kabuğu, PowerPoint, Skype, YouTube, Fotoğraflar ve Visual Studio.
Bu yapılandırmayı istediğiniz zaman Görev Yöneticisi'nin Başlangıç sekmesinde değiştirebilirsiniz.
Prag Projesi'ndeki hareketleri anlama
Hareketleri yazmaya başlamadan önce, bir hareketin temel yapı taşları olan el pozları ve el hareketleri hakkında bilgi edinmeniz gerekir.
El pozu
El pozu , belirli bir anda elin anlık görüntüsünü ifade eder. El pozu, o anlık görüntüdeki avuç içi ve parmakların durumunun tam bir açıklamasını içerir. API'mizde el pozu, aşağıda gösterildiği gibi çeşitli kısıtlamalardan oluşanHandPose sınıfı tarafından temsil edilir:
Aşağıda gösterildiği gibi, bu poza dahil olan tüm kısıtlamaları karakterize ederek herhangi bir el pozunu ifade edebilirsiniz:
Yukarıdaki örnekte, soldaki anlık görüntüyle makul bir şekilde ilişkilendirebileceğiniz tüm kısıtlamalar gösterilmektedir. Bu örnek, Project Prag dilinde kısıtlamaları belirtmek için kullanılan farklı terimlerin anlamını göstermek için yalnızca eğitim amacıyla verilmiştir. Pratikte, el pozu belirtmek için bu kadar çok sayıda kısıtlamayı asla kullanmazsınız. Bunun yerine, el pozunun özünü yakalayan en az sayıda kısıtlamayı bulmak için denemeniz gerekir. Aşağıdaki örnek, aynı pozu açıklamanın pratik bir yoludur:
Bu son örnek, anlık görüntüdeki pozun özünü iyi yakalar: Başparmak ve işaret parmaklarının gerçekleştirdiği sıkıştırma eylemi. El pozunun açıklamasında orta, halka ve serçe parmağın bulunmadığına dikkat edin, sıkıştırma eylemine katılmadıkları ve bu nedenle pozun özünü ifade etmeye gerek olmadığı için.
El pozu tanımlarken (fazla uygunluk) çok fazla kısıtlama kullanmak algılanması zor bir poz oluşturabilir. Bunun nedeni, kullanıcılarınızın tüm kısıtlamaları karşılamak için ellerini çok özel bir duruşa ayarlamaları gerekecektir. El pozu tanımlarken (yani yetersiz uygunluk) çok az kısıtlama kullanmak, pozu algılamayı çok kolaylaştırabilir ve kullanıcınız istemeden pozu gerçekleştirebilir.
El hareketi
Elinizi hareket ettirdikçe , parmak uçlarınız boşlukta bir eğri izler. Bu eğriyi "el hareketi" olarak adlandırıyoruz ve API'mizde HandMotion sınıfı tarafından temsil edilir. El hareketi, bir el parçasıyla (avuç içi ortası veya parmak uçlarından biri) ilişkilendirilir ve bir dizi hareket yapı bloğundan oluşur. Kullanılabilir yapı taşları aşağıda gösterilmiştir:
Gördüğünüz gibi, tüm yapı taşları iki boyutlu olan hareketi tanımlar. Başka bir deyişle - hareketin tamamı tek bir düzlem içinde yer alır. Kısıtlanmamış üç boyutlu el hareketinin doğru şekilde yürütülmesi zor olabileceğinden, daha iyi bir kullanıcı deneyimi sağlamak için bu sınırlamayı kasıtlı olarak uygulamaya aldık. Aşağıda gösterildiği gibi , el hareketinizi içerecek üç kullanılabilir düzlemden birini seçebilirsiniz:
Hareketi hangi el parçasının yürütmesi gerektiğine karar verdikten ve onu içerecek bir düzlem seçtikten sonra, geriye kalan tek şey hareketi bir dizi hareket yapı taşları olarak belirtmektir, örneğin:
Hareket
Bir hareketi, durumları el pozlarını, el hareketlerini ve hatta diğer hareketleri temsil eden bir durum makinesi olarak düşünüyoruz. Bu durum makinesinde ilk durumlar ve alma durumları vardır. İlk durumla başlayıp alıcı durumla biten bir yol, ilgili hareketin algılanmasını tetikleyebilmek için kullanıcının gerçekleştirmesi gereken bir dizi eylemi (el pozları, el hareketleri ve el hareketleri) temsil eder.
API'mizde bir hareket Gesture sınıfı tarafından temsil edilir. Aşağıdaki örnekte, durum makinesi basit bir el pozları ve el hareketleri dizisi olan bir hareket gösterilmektedir:
Örnekteki Sapan hareketi, Retract adlı tek bir el hareketi ve üç el pozu (iki NotPinching örneği ve bir Sıkıştırma örneği) oluşur. Sapan hareketi şu eylem dizisine karşılık gelir: Sol elinizde bir sapan tuttuğunuzu düşünün, şimdi sağ elinizin başparmak ve işaret parmaklarıyla cebini kavrayın ve yeniden çekerek sapan bandını uzatın, son olarak - dizini ve başparmak parmaklarını cebi serbest bırakmak ve hayali merminin uçmasına izin vermek için ayırın.
Prag Projesi'nde hareket oluşturma
Şimdi Project Prag API'sini kullanarak basit bir hareketin nasıl programlandığını gösteren bir örnek vereceğiz.
Önemli
Tüm Project Prag .NET varlıklarının kök ad alanıMicrosoft.Gestures ve buna göre tüm yerel varlıklar için Microsoft::Gestures'tır .
RotateRight hareketini uygulayacağız:
Sezgisel olarak, RotateRight hareketini gerçekleştirirken bir kullanıcı ön plan uygulamasındaki bir nesnenin 90° sağa döndürülmesini bekleyebilir. Örneğin Bulma İstemcimizde bu hareketi kullanarak Bir PowerPoint slayt gösterisindeki bir görüntünün döndürülme işlemini tetikledik.
Aşağıdaki kod , RotateRight hareketini tanımlamanın önerilen yolunu gösterir:
Uyarı
Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.
RotateRight hareketini iki el pozu dizisi olarak belirtin: RotateSet ve RotateGo. Her iki poz da başparmak ve dizinin açık olmasını, ileriye dönük olmasını ve birbirine dokunmasını gerektirmez. Pozlar arasındaki fark , RotateSet'in dizin parmağın başparmak üzerinde olması gerektiğini ve RotateGo'nun başparmak sağındaki olması gerektiğini belirtmiş olmasıdır. Bu nedenle RotateSet ile RotateRight arasındaki geçiş, elin sağa dönmesine karşılık gelir.
Orta, halka ve pembe parmakların RotateRight hareketinin tanımına katılmadığını unutmayın. Bu anlamlıdır çünkü bu parmaklarının durumunu hiçbir şekilde kısıtlamak istemeziz. Başka bir deyişle, bu parmaklar RotateRight hareketinin yürütülmesi sırasında herhangi bir poz varsaymayı serbesttir.
Hareketi tanımladıktan sonra, hedef uygulamanızda uygun işleyiciye hareket algılamayı belirten olayı bağlamanız gerekir:
Uyarı
Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.
Algılamanın kendisi Microsoft.Gestures.Service.exe işleminde gerçekleştirilir (yukarıda açıklanan "Microsoft Hareketleri Hizmeti" penceresiyle ilişkilendirilir). Bu işlem arka planda çalışır ve hareket algılama için bir hizmet görevi görür. Hizmetle iletişim kurmak için GesturesServiceEndpoint sınıfını size sunuyoruz. Aşağıdaki kod parçacığı bir GesturesServiceEndpoint nesnesinin örneğini oluşturur ve algılama için RotateRight hareketini kaydeder :
Uyarı
Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.
RotateRight hareketinin algılanmasını durdurmak istediğinizde, kaydı aşağıdaki gibi kaldırabilirsiniz:
Uyarı
Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.
Kullanıcı RotateRight hareketini yürüttüğünde işleyiciniz artık tetiklenmez.
Hareketlerle çalışmayı bitirdiğinizde GesturesServiceEndpoint nesnesini atmalısınız:
Uyarı
Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.
Yukarıdaki kodun derlenmesi için MicrosoftGesturesInstallDir ortam değişkeni tarafından belirtilen dizinde bulunan aşağıdaki derlemelere başvurmanız gerektiğini lütfen unutmayın:
- Microsoft.Gestures.dll
- Microsoft.Gestures.Endpoint.dll
- Microsoft.Gestures.Protocol.dll
RotateRight hareketini kullanarak eksiksiz bir açık kaynak kod örneğiyle denemeler yapmak için lütfen GitHub örnekleri depomuzdakiRotateSample'a bakın. Bu depoda, C# ve C++ (UWP ve .Net Core tatları dahil) hareketleri için uygulamaları gösteren daha gelişmiş örnekler de bulabilirsiniz.