Como criar (criar) processualmente uma árvore artística (2D) em tempo real (L-System?)


20

Recentemente programei um módulo do sistema L , o que me interessou ainda mais. Também sou viciado em Plants vs Zombies, gostei muito do conceito de Árvore da Sabedoria. Gostaria de criar arte processual semelhante apenas por diversão e aprender mais.

Pergunta: Como devo abordar o processo de criação de uma árvore artística (2D talvez com câmera / perspectiva fixa) dinamicamente?

Idealmente, gostaria de começar com uma planta (apenas um caule com uma folha) e cultivá-la dinamicamente usando alguma influência (ação de entrada / ação do usuário) sobre sua estrutura. Essas influências podem resultar em diferentes tipos de ramificação, curvas nos galhos, sua propagação, localização dos frutos, cor das flores, etc. Deseja que ele seja realmente cheio de vida / espírito. :)

Plants vs Zombies: Tree of sabedoria Seria ótimo cultivar dinamicamente uma árvore semelhante, mas com muito mais variações e animações.

Meu histórico: Programador, utilizou poucos mecanismos de jogo (Ogre3d, cocos2d, unity). Realmente não tenho programado diretamente usando o openGL, tentando consertar isso :).

Estou pronto para gastar um tempo considerável. Informe-me sobre as APIs? e como um especialista como você lidaria com esse problema?

Por que 2D? Eu acho que é mais fácil resolver o problema considerando apenas duas dimensões.

Inspirações artísticas:

Somente a árvore, com frutos e folhas, sem os arbustos no fundo

A grande árvore (galhos visíveis, folhas verdes, flores, frutas, etc.) à esquerda, atrás do macaco.

Eden do PixelJunk (inspiração no estilo Art).

Macieira gerada processualmente usando fractais

Por favor, deixe-me saber se foi fácil para você entender a pergunta.

Espero que uma discussão de várias abordagens seja útil para todos. Caras, vocês são incríveis.


2
Talvez eu não tenha uma resposta para você, mas definitivamente gostaria de ver para onde isso vai. Conceito incrível!
Bloodyaugust 10/03/11

Ótima pergunta, eu estive interessado em L-Systems por um tempo, mas não fiz qualquer coisa com que o interesse :)
Luther


11
@Stephen só para você saber esta questão é de 2011 e foi necro'd ao topo pelo usuário que faz a pergunta a edição fora Student/deStudent/Programmer
PeterT

@lanan Faça apenas edições substanciais para a pergunta, o fato de você não ser mais aluno não é uma mudança substancial ou motivo para editar.
Michaelhouse

Respostas:



8

Algumas idéias para o seu "jogo":

  • Solicite ao usuário um nome para sua árvore primeiro. Use esse nome para gerar uma semente para o algoritmo. Portanto, todo nome terá sua árvore única. A semente também pode influenciar o tipo de folhagem e frutos da árvore.
  • Você pode implementar algum tipo de " tamagotchi de árvore ", em que a árvore cresce e fica mais agradável quanto mais o usuário se importa (fertilizar, água etc.)
  • Crie uma lista de recordes das árvores mais altas. Outra idéia seria mostrar alturas e nomes de outros usuários próximos à sua árvore. Assim, você pode comparar a altura da sua árvore diretamente com outros usuários. Veja este vídeo como um exemplo. As nuvens indicam a altura que outros usuários alcançaram.

Existem muitos algoritmos e documentos para a geração de árvores procedurais por aí ( esse encadeamento pode ser interessante ). Uma tarefa difícil é misturar bem os galhos. Definitivamente, o 2D será mais fácil nesse sentido, pois você pode resolver isso com a mistura alfa.

Como você tem experiência com Ogre3D, Unitiy e cocos2d, pode seguir em frente e implementar essa coisa (não é necessário começar a aprender o OpenGL agora IMHO). Pessoalmente, eu escolheria o cocos2d e lançaria para iPad e / ou iPhone, para que todos possam carregar sua árvore com seu dispositivo móvel.


11
Eu gostaria que jogasse com o L-Systems de uma maneira social / competitiva.
Deft_code 10/03/11

11
Obrigado por me apontar para o tópico gamedev .. Boas idéias, tamagotchi e goo-tower .. aplicação móvel seria muito legal. encontrado um vídeo 3DS Max plugin - que é bastante incrível ligação ..
lal

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.