Você pode ter alguma sorte com uma abordagem semelhante às imagens genéticas de Karl Sims .
Ele usa um conjunto simples de operadores em uma linguagem semelhante ao LISP, de modo que a saída de qualquer operador possa ser utilizada para influenciar a imagem, da mesma forma que em alguns idiomas de sombreador (ou seja, um escalar seria um valor em escala de cinza, vector3seria RGB, etc.) )
Embora eu ache que isso seja coisa de implementação, o que você provavelmente quer são as palavras-chave, que (iirc) contêm todos os princípios básicos:
- funções trigonométricas (
sin, cos, tanetc.)
- position (
x, y)
- operadores matemáticos básicos (
sqrt, pow, abs, inverse)
- funções de ruído (
fBm, noise2, noise3)
- outros fractais (
mandelbrot, julia)
- funções de interpolação (
lerp, quad, step, smoothstep)
(Algumas das opções acima podem não estar em sua implementação; eu encontrei o trabalho dele há muito tempo e fiz algumas tentativas do que você está descrevendo ao longo dos anos - para que as memórias estejam vazando :)
Mantendo-o interessante (e rápido)
Tive um pouco de sorte com uma abordagem de várias camadas que reduziu enormemente a quantidade de evoluções mortas.
- um conjunto de intervalos é gerado para cada operador (ou alterado das rodadas anteriores)
- idealmente, esses valores mantêm os valores dentro de um intervalo "saudável" para cada função, mas podem evoluir para intervalos com resultados surpreendentemente úteis, que parecem ser a coisa "certa" a ser feita.
- gerar algumas árvores de algoritmo
- para cada um deles, crie alguns mapas de altura em posições aleatórias e avalie a adequação
- se tivermos muitas correspondências boas, evolua um pouco nesse ramo, perturbando ligeiramente os intervalos da etapa 1 em cada filho
- caso contrário, provavelmente temos intervalos ruins, volte para a etapa 1
Contudo...
Agora que eu pulei convenientemente o algoritmo de condicionamento físico , usei principalmente a abordagem de "seleção não natural" de Karl Sims, na qual você vê a geração atual no meio do quadrado de um monte de filhos (popularizado pelas Ferramentas de Potência de Kai na época - aqui está uma imagem do que eu quero dizer ) ..
No entanto, você provavelmente poderia ter um conjunto de imagens de treinamento, talvez algumas de imagens de satélite e outras artificiais com qualidades particulares, e talvez use a wavelet ou a análise 2D FFT nelas versus o terreno que você está testando?
Este é um tópico interessante, mas duvido que você precise de uma resposta :)
EDIT: ahh. tive que remover um monte de links porque eu sou um novo usuário: - |