Bir Nesneyi Döndürürken Eğri Boyunca Taşıma


11

Bir nesneyi eğri boyunca hareket ettirmek isterim . Eğri üzerindeki belirli noktalarda, nesnenin hızı değiştirmesini ve kendi ekseni boyunca dönmesini isterim.

Bir hedefe uçan bir uçağı hayal edin. İzlemesi gereken yolu vardır, artı hızını ve yönünü tamamen ayarlar (yön, ilik, banka).

Aşağıdakiler hakkında bir başlangıç ​​bilgisi isteyebilir miyim :

  • Bir nesneyi düzgün bir şekilde enterpole etmek için ne tür eğriler kullanılır
  • Hareketli aralığın hızını ve eğri düğümleri arasındaki geçişi kontrol edebileceğim güvenilir enterpolasyon için hangi formüller kullanılacak?
  • Ne bilgi edilmelidir ihraç 3D yazma uygulamasından
  • Bunun için quaternions slerp () kullanmalı mıyım ?

Bu konuyu etkili bir şekilde kapsayan bir kitap hakkında bilgi sahibi olursanız , bu en çok rahatsız edici olan şeydir. Teşekkür ederim.

Yanıtlar:


7

Hareket eğrisi için Hermite eğrileri kullanmanızı öneririm. Sadece bir başlangıç ​​noktası / hızı ve bir bitiş noktası / hızı verirsiniz ve bu ikisi arasında hoş ve düzgün bir eğri oluşturur. İlk nokta çiftinin bitiş noktasını / hızını sonraki nokta çiftinin başlangıç ​​noktası / hızı olarak kullanın ve kesintisiz uzun ve sarma bir eğriniz var.

Bu, hızı yönetme gereksinimini mükemmel bir şekilde yerine getirir: seçtiğiniz hızlarla zaman içinde bir nokta listesi verirsiniz ve size sorunsuz bir şekilde enterpolasyonlu konum ve hız değerleri verir. Bununla gitmek istiyorsanız, 3D geliştirme uygulamasından ayıklamanız gereken tek şey, istediğiniz yoldaki noktalar ve hızlardır. Bunları, belki de kullanıcı girdisine bağlı olarak çalışma zamanında da oluşturabilirsiniz.

Yönü ayarlamak için bir dizi seçeneğiniz vardır. Uçak her zaman nereye gittiğini gösterecekse (bu mantıklı bir durumdur) geminizin nereye bakması gerektiğini bulmak için Hermite eğrisinden enterpolasyonlu hız vektörünü kullanabilirsiniz. Eğer yukarı vektörü (bir düzlemde hareket ediyorsa veya hangi yönün yukarı olması gerektiğini biliyorsanız) biliyorsanız, üçüncü ekseni çapraz (ön, yukarı) ile hesaplayabilirsiniz ve oryantasyonunuz olur.

Düzlemin bazen yoldaki ön yönden sapması için bir şekilde "sallantılı" bir yönlendirme istiyorsanız, ön yönü istenen yön olarak kullanabilir ve mevcut yön ile istenen yön arasında art arda tek adımlı bir adım atabilirsiniz.

Yolla hiçbir ilgisi olmayan özel yönlendirme istiyorsanız, elbette buna yönlendirme kuaterniyonlarının bir listesini sağlayabilirsiniz. Sonra puanlarınız (nokta, hız, kuaterniyon) olur. Ardından yönelimlerinizi yol boyunca ayarlamak için arka arkaya iki kuaterniyon arasındaki slerp'i kullanabilirsiniz. Slerp'in doğrusal bir enterpolasyon yöntemi olduğunu unutmayın . Ancak, genellikle iyi olmalıdır. Döndürmelerin dikişlerde yeterince düzgün olmadığını bulursanız, kuaterniyonların listesini burada Bölüm 7'de açıklandığı gibi bir Bezier eğrisi ile enterpolasyonlamayı deneyebilirsiniz .

İşte başlamanıza yardımcı olabilecek bazı kaynak kodları. Kuaterniyonların bir listesi (kadro, bezier, vb.) İçin bir dizi pürüzsüz enterpolasyon tekniğine sahiptir.

Herhangi bir sorunuz varsa bize bildirin!


+1 - Teşekkürler, cevabınız temelde her şeyi kapsıyor. Sorduğum her soruyu cevaplıyor, ayrıca çalışmak için daha fazla materyal sağlıyorsunuz. Şimdi, başlamak için yeterli malzemem var. Bu nedenle, bunu Kabul Edilen Cevap olarak işaretlememek için hiçbir neden göremiyorum .
Bunkai.Satori

@ Bunkai.Satori teşekkür ederim, yardımcı olduğum için memnunum :) Sonunda ne yarattığını görmek isterim.
Gazihan Alankus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.