Animacje we wszystkich kolorach

11

W ubiegłym roku bardzo popularne było stworzenie obrazu zawierającego każdy 24-bitowy kolor RGB .

Moim wyzwaniem jest stworzenie płynnej animacji (powiedzmy 24 klatki / s), w której kolor każdego piksela każdej klatki jest niepowtarzalny. Pozwolę również na powielanie kolorów, o ile każdy kolor pojawia się tyle samo razy (więcej niż 0) , ponieważ w przeciwnym razie animacja będzie musiała być krótka lub klatki małe.

Przedstawiłem tutaj kilka przykładów opartych na zwycięskim rozwiązaniu do wersji 2d. Niestety wygląda na to, że nie możesz osadzać filmów, więc linki będą musiały wystarczyć.

sobe86
źródło
1
Ktoś już wykonał animację w tej odpowiedzi z połączonego pytania. Nie jestem jednak pewien, czy spełnia kryteria.
mbomb007
1
Przydałoby się nieco więcej specyfikacji technicznych. Co znaczy „tworzyć”? Czy renderować wideo na dysk? Wyświetlać animację w czasie rzeczywistym?
mınxomaτ
Możesz użyć gif ...
wizzwizz4
1
@ wizzwizz4 GIF nie może zawierać więcej niż 256 kolorów; dzięki czemu możesz stworzyć obraz 16 x 16 w różnych kolorach dla każdego piksela - i nie ma już miejsca na animację.
Tytus

Odpowiedzi:

4

Matematyka

Jest to prosta implementacja, w której każdy kolor rgb zajmuje przecięcie w siatce 256 na 256 na 256 jednostek.

Szarpanie wydaje się być artefaktem wideo, a nie błędem w danych, co powinno być dokładne.

wartości czerwone zwiększają się w dół, wartości zielone zwiększają się w prawo, a wartości niebieskie zwiększają się o ramkę.

Być może później coś zmieszam.

f@b_ := Image@Table[{r, g, b}/255, {r, 0, 255}, {g, 0, 255}]
Export["c.mov", Table[f@b, {b, 0, 255}]]

Klip QuickTime

DavidC
źródło
To zastanawia. Działa dla mnie, a uprawnienia dostępu są ustawione dla każdego. Czy możesz odtwarzać inne filmy na vimeo.com?
DavidC
Z jakiegoś powodu teraz działa.
Fatalize
miło to słyszeć.
DavidC
0

PHP (+ HTML) + JavaScript

Część 1
generuje 256 obrazów z wyraźnymi czerwonymi wartościami od 0 do 255;
wartość zielona = indeks wiersza, wartość niebieska = indeks kolumny

for($r=$h=256;$r--;){$i=imagecreatetruecolor($g=$h,$h);for(;$g--;)for($b=$h;$b--;)imagesetpixel($i,$g,$b,imagecolorallocate($i,$r,$g,$b));imagepng($i,"$r.png");imagedestroy($i);}

Uwaga : w zależności od implementacji PHP może to spowodować wewnętrzny błąd serwera.
Jeśli tak, weź najmniejszą liczbę obrazów, które już zostały utworzone, wstaw <number>,za $r=i uruchom ponownie.

Część 2
przechodzi przez te obrazy od 0 do 255 iz powrotem (0 i 255 po 2 klatki)

<img><script>r=d=0;setInterval(()=>{document.images[0].src=r+".png",(d?!r--:(++r)>=256)?r-=(d=!d)?1:-1:r},40);</script>
Tytus
źródło