XNA ile, zemine yansıtılan basit bir dikdörtgen görüntülüyorum. Projektör keyfi bir konuma yerleştirilebilir. Açıkça, yansıtılan dikdörtgen projektörlerin konumuna ve açısına göre çarpıtılır. Kinect dört köşeyi arayarak zemini tarar. Şimdi amacım orijinal dikdörtgeni, temelde dikdörtgeni önceden eğdirerek projeksiyonun bozulmayacağı şekilde dönüştürmektir.
İlk yaklaşımım her şeyi 2B olarak yapmaktı: Önce warpPerspective()
taranan noktalardan iç dikdörtgenin noktalarına bir perspektif dönüşümü (OpenCV'ler kullanarak ) hesaplayın ve dikdörtgenin tersini uygulayın. Bu işe yaramış gibi görünüyordu, ancak GPU'da işlenemediği için çok yavaştı.
İkinci yaklaşım, XNA'nın oluşturma özelliklerini kullanmak için her şeyi 3D yapmaktı. İlk olarak, bir uçak görüntüleyeceğim, Kinect ile köşelerini tarayacağım ve alınan 3D Noktalarını orijinal düzleme eşleyeceğim. Teorik olarak, perspektif dönüşümünün tersini 2B yaklaşımında yaptığım gibi düzleme uygulayabilirim. Ancak, XNA bir görünüm ve projeksiyon matrisi ile çalıştığı için, sadece gibi bir işlevi warpPerspective()
çağıramıyorum ve istenen sonucu elde edemiyorum . Kameranın görüş ve projeksiyon matrisi için yeni parametreleri hesaplamam gerekir.
Soru: Bu parametreleri hesaplamak ve bunları iki matrise (görünüm ve projeksiyon) bölmek mümkün müdür? Değilse, kullanabileceğim başka bir yaklaşım var mı?
warpPespective
? OpenCV'ye aşina değilim, ancak dokümanı okurken bu fonksiyonun bir görüntüye bir perspektif uyguladığı anlaşılıyor . Yoksa kafam karıştı mı? Her neyse, belki ilk uygulamanızla ilgili daha fazla ayrıntı eklemek yardımcı olabilir.