Animações com todas as cores

11

No ano passado, houve um desafio muito popular para criar uma imagem contendo todas as cores RGB de 24 bits .

Meu desafio é criar uma animação suave (digamos 24 quadros / s), onde a cor de cada pixel de cada quadro é única. Permitirei também a duplicação de cores, desde que todas as cores apareçam o mesmo número de vezes (maior que 0) , pois, caso contrário, a animação terá que ser curta ou os quadros, pequenos.

Eu produzi alguns exemplos aqui , com base na solução vencedora para a versão 2D. Infelizmente, parece que você não pode incorporar vídeos, então os links terão que ser feitos.

sobe86
fonte
1
Alguém já fez uma animação nesta resposta a partir da pergunta vinculada. Não tenho certeza se ele atende aos critérios, no entanto.
mbomb007
1
Um pouco mais de especificações técnicas seria bom. O que significa "criar"? Renderizar um vídeo em disco? Exibir uma animação em tempo real?
mınxomaτ 12/09/2015
Você poderia usar um gif ...
wizzwizz4
1
@ wizzwizz4 um GIF não pode conter mais do que 256 cores; para que você possa criar uma imagem de 16x16 com cores diferentes para cada pixel - e não há espaço para animação.
Titus

Respostas:

4

Mathematica

Essa é uma implementação simples, com cada cor rgb ocupando uma interseção em uma grade de 256 x 256 x 256 unidades.

A sacudidela parece ser um artefato do vídeo, não um erro nos dados, que deve ser exato.

valores vermelhos aumentam para baixo, valores verdes aumentam para direita e valores azuis aumentam por quadro.

Talvez eu misture as coisas mais tarde.

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

Clipe do QuickTime

DavidC
fonte
Isso é intrigante. Funciona para mim e as permissões são definidas para qualquer pessoa acessá-lo. Você consegue reproduzir outros vídeos no vimeo.com?
DavidC 12/09
Funciona agora, por algum motivo.
Fatalize 12/09
feliz em ouvir isso.
DavidC 12/09
0

PHP (+ HTML) + JavaScript

A parte 1
gera 256 imagens com valores vermelhos distintos de 0 a 255;
valor verde = índice de linha, valor azul = índice de coluna

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

Nota : Dependendo da implementação do PHP, isso pode gerar um erro interno no servidor.
Se isso acontecer, pegue o menor número de imagens que já foram criadas, insira <number>,depois $r=e execute novamente.

A Parte 2
passa por essas imagens de 0 a 255 e vice-versa (0 e 255 tendo 2 quadros cada)

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