Thuật toán nào được sử dụng trong hoạt hình của cửa sổ Giới thiệu về uTorrent?


8


Trong một phiên bản gần đây của uTorrent, nếu bạn mở Cửa sổ Giới thiệu , bạn sẽ thấy một nền hoạt hình, đó là loại sóng cứ kéo dài mãi mãi.
Làm thế nào điều này có thể đạt được? Đây có phải là một loại thuật toán / lớp thuật toán nổi tiếng?
Cảm ơn.
nhập mô tả hình ảnh ở đây


1
@trichoplax Tôi đã xóa pic và thêm GIF. Cảm ơn.
Wfi Okly

Trông giống như một hiệu ứng đi xe đạp bảng màu. Hình ảnh chính nó là tĩnh.
PaulHK

Câu trả lời:


9

Như bạn đã khám phá và đề cập trong phần tự trả lời của mình, mẫu trong nền dường như là một tổng số độ dốc hình sin.

Tuy nhiên, ví dụ được liên kết đến trong câu trả lời của bạn phức tạp hơn so với sử dụng bởi WikiTorrent. Nền của cửa sổ Giới thiệu dường như là một mẫu tĩnh, thay vì mẫu hình sin hoạt hình được sử dụng trong bài plasma.

Một số độ dốc hình sin đã được tổng hợp để đưa ra một hình ảnh duy nhất và ảo ảnh chuyển động được đưa ra bằng cách đơn giản là đạp các màu trong một hình ảnh đó, thay vì tạo ra một số hình ảnh khác nhau. Điều này dễ nhận thấy nhất nếu bạn tập trung vào trung tâm của một trong những vòng màu. Trong mô hình của PatrickTorrent, bạn sẽ nhận thấy rằng mỗi vòng ở một vị trí và có màu chảy vào hoặc ra khỏi nó. Ngược lại, các vòng màu trong mô hình hoạt hình đầy đủ di chuyển xung quanh, đôi khi phân chia hoặc hợp nhất.

Cách tiếp cận đơn giản được sử dụng bởi GianTorrent gợi nhớ đến các hình ảnh động được sử dụng trong quá khứ khi tính toán lại các mẫu hình sin mỗi khung hình không thực tế.



2

Hiệu ứng có thể được tái tạo một cách đại khái bằng cách thêm 2 (hoặc nhiều hơn) các hình sin xuyên tâm với nhau và hơn là tạo hiệu ứng pha kết quả thông qua một hàm sin khác.

Sử dụng www.shadertoy.com để xác minh.

   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);
   }

1
Đối với một cái gì đó thú vị hơn, bạn có thể làm sinh động nguồn gốc của các hình dạng xuyên tâm. -> float d = sin (chiều dài (uv - vec2 (0,5)) * 35.0) + sin (chiều dài (uv - vec2 (0.2 + sin (iGlobalTime), 0.3)) * 45.0);
PaulHK
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.