Algoritma apa yang digunakan dalam animasi “About window” uTorrent?

8


Dalam versi terbaru dari uTorrent, jika Anda membuka Jendela Tentang , Anda akan melihat latar belakang animasi, yang merupakan jenis gelombang yang berlangsung selamanya.
Bagaimana ini bisa dicapai? Apakah ini jenis algoritma / kelas algoritma yang terkenal?
Terima kasih.
masukkan deskripsi gambar di sini

Wfi Okly
sumber
1
@trichoplax Saya menghapus gambar dan menambahkan GIF. Terima kasih.
Wfi Okly
Tampak seperti efek siklus palet. Gambar itu sendiri statis.
PaulHK

Jawaban:

9

Ketika Anda menemukan dan menyebutkan dalam jawaban-diri Anda, pola di latar belakang tampaknya merupakan jumlah gradien sinusoidal.

Namun, contoh yang ditautkan dalam jawaban Anda lebih rumit daripada yang digunakan oleh μTorrent. Latar belakang jendela Tentang tampaknya merupakan pola statis, bukan pola animasi sinusoidal yang digunakan dalam pos plasma.

Beberapa gradien sinusoidal telah dijumlahkan untuk memberikan gambar tunggal, dan ilusi gerakan diberikan hanya dengan bersepeda warna dalam satu gambar, daripada menghasilkan sejumlah gambar yang berbeda. Ini paling terlihat jika Anda fokus pada bagian tengah dari salah satu cincin warna. Dalam pola μTorrent Anda akan melihat bahwa setiap dering tetap di satu tempat, dan memiliki warna yang mengalir baik ke dalam atau keluar dari itu. Sebaliknya, cincin warna dalam pola animasi sepenuhnya bergerak, kadang-kadang membelah atau menggabungkan.

Pendekatan sederhana yang digunakan oleh μTorrent mengingatkan pada animasi yang digunakan di masa lalu ketika menghitung ulang pola sinusoidal setiap frame tidak realistis.

trichoplax
sumber
2

Setelah beberapa pencarian, saya menemukan itu disebut Plasma.
Efek Plasma

Wfi Okly
sumber
2

Efeknya dapat secara kasar diciptakan kembali dengan menambahkan 2 (atau lebih) sinusoid radial bersama-sama dan daripada menghidupkan fase yang dihasilkan melalui fungsi sinus lain.

Gunakan www.shadertoy.com untuk memverifikasi.

   void mainImage( out vec4 fragColor, in vec2 fragCoord )
   {
       vec2 uv = fragCoord.xy / iResolution.xy;
       float d = sin(length(uv - vec2(0.5)) * 35.0) + sin(length(uv - vec2(0.2,0.3)) * 45.0);
       d = sin(d * 4.0 + iGlobalTime * 4.0)*0.5+1.0;
       fragColor = vec4(d,d,d,1.0);
   }
PaulHK
sumber
1
Untuk sesuatu yang lebih menarik, Anda dapat menghidupkan asal-usul bentuk radial juga. -> float d = sin (panjang (uv - vec2 (0.5)) * 35.0) + sin (panjang (uv - vec2 (0.2 + sin (iGlobalTime), 0.3)) * 45.0);
PaulHK