Ray Marching Nedir? Küre aynı şeyi mi izliyor?


31

Birçok ShaderToy demosu sahneyi oluşturmak için Ray Marching algoritmasını paylaşıyor, ancak bunlar genellikle çok küçük bir stille yazılmışlar ve hiçbir basit örnek veya açıklama bulamıyorum.

Öyleyse Ray Marching nedir? Bazı yorumlar, bunun Küre İzleme'nin bir varyasyonu olduğunu gösteriyor. Böyle bir yaklaşımın hesaplama avantajları nelerdir?

Yanıtlar:


34

TL; DR

Bunlar, küre izlemenin, aile adı olan ışın yürüyüşü yöntemlerinden biri olduğu aynı çözücü ailesine aittir.

Bir tanımın raymarching

Raymarching, yüzey işlevinin kolayca çözülemeyeceği (veya sayısal yinelemeli yöntemler olmadan imkansız olan) geleneksel ışın izlemeye benzer bir tekniktir. Işın izlemede sadece ışın kesişimine bakarsınız, oysa ışın geçişinde, kesişme noktasını bulana kadar ileri (ileri ya da geri) yürüyün, yeterli numuneye sahip olun ya da çözmeye çalıştığınız her neyse. Yüzey bulma için newton-raphson yöntemi ya da değişken bir işlevi bütünleştirmek için toplamaya çalışın.

Bu yararlı olabilir eğer:

  • Üniform olmayan volumetrik hale getirme ihtiyacı
  • Örtük fonksiyonları, fraktalları oluşturma
  • Paralaks haritalama gibi kesişmenin önceden bilinmediği diğer parametrik yüzey türlerini oluşturma
  • Vb

Geleneksel ışınlama

Resim 1 : Yüzey bulgusu için geleneksel ışın yürüyüşü

İlgili Mesajlar:

Küre izleme

Küre izleme, olası bir Ray yürüyüş algoritmasıdır. Raymarching'in tamamı bu yöntemden faydalanmaz, çünkü bu tür bir şemaya dönüştürülemezler.

Küre izleme, örtülü yüzeyleri oluşturmak için kullanılır . Örtük yüzeyler, sürekli bir fonksiyonun bir seviyesinde oluşur. Özünde denklemi çözme

F(X,Y,Z) = 0

Bu fonksiyonun her noktada nasıl çözülebileceğine bağlı olarak, devam edilebilir ve mevcut yürüyüş adımına uygun olabilecek en büyük alanı tahmin edebilirsiniz (ya da tam olarak makul bir şekilde güvenli değilse). Öyleyse, bir sonraki yürüyüş mesafesinin en azından bu kadar büyük olduğunu biliyorsunuz. Bu şekilde, süreci hızlandıran uyarlamalı ışın yürüyüşü adımlarına sahip olabilirsiniz.

Küre izlemenin uyarlanabilir adım boyutu vardır

Resim 2 : Küre izleme * eylemde, adım boyutunun nasıl uyarlanabilir olduğunu not edin

Daha fazla bilgi için bakınız:

* Belki 2d'de buna daire izleme denir :)


1
Ben derinlemesine bir açıklama için Scratchapixel bu makaleyi tavsiye ederim: scratchapixel.com/lessons/advanced-rendering/...
user18490

Scratchapixel için @ user18490 adlı kullanıcının bağlantısı taşındı scratchapixel.com/lessons/advanced-rendering/... . Sitenin geri kalanı ( scratchapixel.com/index.php ) de faydalı görünüyor.
WillC

15

Işın geçişi, bir ışın boyunca adım attığınız ve normalde iç / dış testlerin hızlı olduğu katı geometriye sahip kavşakları bulmak için kullanılan kavşakları test ettiğiniz yinelemeli bir ışın kesişme testidir .

görüntü tanımını buraya girin
Rölyef Dokulu Render Geometrisi'nden Görüntüler

Bir kesişmenin nerede olabileceği hakkında hiçbir fikriniz yoksa sabit bir adım boyutu oldukça yaygındır, ancak bazen bunun yerine ikili veya sekant araması gibi kök bulma yöntemleri kullanılır. Genellikle ilk kesişme noktasını bulmak için sabit bir adım boyutu kullanılır, ardından ikili arama yapılır. Önce piksel başına yer değiştirme haritalama tekniklerinde ışın geçişine rastladım. Yükseklik Dışı Yüzey Detaylarının Rölyef Haritalaması iyi bir okumadır!

görüntü tanımını buraya girin

Yaygın olarak kullanılan, bazı önişlemelerin, kesişmeden geometriyi bırakmadan ışın boyunca hareket edebilmeniz için bir güvenlik mesafesi sağladığı veya daha da iyisi, kesişmeden ve sonra onu terk etmeden geometriden ayrılmadan bir boşluk bırakma ile yaygın olarak kullanılır. Örneğin, koni adım eşlemesi ve rahat bir koni adım eşlemesi.

Küre izleme, örtük bir ışın küresi kesişim testine atıfta bulunabilir, ancak aynı zamanda @joojaa'nın bahsettiği ve William Donnelly ( Uzaklık Fonksiyonları ile Piksel Başına Yerleştirme Haritaları ) tarafından kullanılan, John Hart'ın uzay sıçraması tekniğinin adıdır. 3B doku, geometrinin olmadığı yarıçapı kodlar.


Ha, işte başlıyorsunuz, başkalarından fotoğraf çekmek, kendiniz çizmekten daha etkilidir.
joojaa

@joojaa Evet, nerede olduklarını hatırlarsanız daha hızlı, ancak bunu memnuniyet verici hissetmeden kendiniz yapın: P. Ayrıca, bu aptal alt piksel işleme hatasını kromda yazdım, böylece metnin tamamı renkli.
jozxyqk 10:15

1
Peki bu alt piksel oluşturma sorulmamış bir şey. Oysa.
joojaa

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.