Arte Computacional com Inteligência Artificial no Desenvolvimento de Games

Usando IA Gerativa para ir além em seus Trabalhos

Você viu que no correr da disciplina você vai fazer dois maiores trabalhos em computação gráfica avançada, os quais no final você integra em um game:

  1. O trabalho de modelagem de um ambiente realizado com um modelador avançado, tipicamente Blender, seja de um objeto arquitetônico ou, Como usamos em muitos semestres, o navio Carl Hoepcke (já houve um semestre também em que a modelagem escolhida foi a de uma bicicleta de suspensão traseira de um inventor italiano que morou no Brasil no início do século 20);
  2. O trabalho de animação de modelos hierárquicos onde você toma um esqueleto animado através de captura de movimentos e integra a um boneco modelado, também em um modelador avançado como Blender, e da vida a este boneco.

No final da disciplina então você integra esses dois trabalhos em um game, desenvolvido com uma game engine da sua escolha, tipicamente Unity, Godot ou UE5, onde o boneco vai se movimentar no ambiente que você modelou e onde você implementa uma jogabilidade mínima, configurando algumas ações que dão pontos ao jogador.

O que este trabalho aqui tem de diferente?

  • Você pode tentar usar ferramentas da área da Arte Computacional que utilizam Inteligência Artificial Gerativa.

Nós sugerimos usar variantes de stableDiffusion por ser gratuito e possuir muitas adaptações e especializações que podem ser facilmente usadas para o seu trabalho, inclusive em ambientes como o Google colab, caso você não possua um computador em casa capaz de executar as redes neurais. Mas nada impede você de usar produtos como DALL-E. 

Usando stableDiffusion para turbinar o Ambiente do seu Game

O trabalho de modelagem de um ambiente melhorado com IA. Aqui você vai usar a inteligência artificial gerativa para duas coisas:

  1. Gerar texturas para dar realismo as superfícies dos seus objetos arquitetônicos: ao invés de colar uma textura de parede de tijolos ou muro de pedra pega na internet você vai usar stableDiffusion para criar “imaginações” da aparência dos prédios que você vai utilizar no seu jogo e vai, depois de ter feito a modelagem 3D desses prédios com base na planta baixa, colar estas texturas geradas com stableDiffusion nos prédios que você modelou. Faça a mesma coisa para o “chão” do seu ambiente.
  2. Gerar texturas de fundo para dar ambiência ao seu jogo: ao invés de você ter um fundo “cor de céu” ou coisa parecida, coloque um cenário apocalíptico com raios e trovões ou outra coisa que você achar que combina com o clima do seu jogo.

Veja aqui uma imagem da Ponte Hercílio Luz em um cenário pós-apocalíptico gerada com stableDiffusion ControlNet:

hl7a.2

Screenshot from 2023-03-19 21-52-57

Screenshot from 2023-03-19 13-28-41

Veja aqui uma imagem da Ponte Hercílio Luz em um cenário pós-apocalíptico com um robô inspirado no Boitatá de Cascaes em primeiro plano:

hl7a.2.16-9.2

hl6a.3.2

Produzindo um ambiente para o seu jogo: as fortalezas das Ilhas do Anhatomirim e do Ratão Grande

Como sempre, nós nos inspiramos em alguma coisa da cultura e história locais. Para este trabalho a ideia é que você utilize alguma das fortalezas da Ilha como o ambiente onde o seu jogo vai acontecer. Existe muito material sobre as fortalezas da Ilha organizado digitalmente pela própria UFSC, inclusive arquivos em AutoCad com plantas baixas e fachadas de prédios

  • Site com mapas e plantas baixas o tanto da Fortaleza quanto dos prédios: https://fortalezas.org/ 
    • No site acima você vai achar um monte de coisas sobre fortalezas, entre elas a fortaleza da Ilha do Anhatomirim: https://fortalezas.org/?ct=fortaleza&id_fortaleza=1 A Fortaleza de Santa Cruz está localizada na Ilha de Anhatomirim, no atual município de Governador Celso Ramos (Grande Florianópolis), dominando a entrada da Baía Norte da Ilha de Santa Catarina. 
    • Veja mais aqui: https://projetofortalezasmultimidia.ufsc.br/ 
    • Alternativamente você pode também usar a fortaleza dos Ratones: https://fortalezas.org/?ct=fortaleza&id_fortaleza=2  A Fortaleza de Santo Antônio de Ratones está localizada na Ilha do Ratão Grande, na Baía Norte da Ilha de Santa Catarina, em frente à Praia da Daniela. Projetada e construída pelo Engenheiro Militar, Brigadeiro José da Silva Paes, primeiro governador da Capitania de Santa Catharina (1739-49), a Fortaleza de Ratones é um dos vértices do triângulo defensivo que protegia a Barra Norte da Ilha de Santa Catarina, formado ainda pela Fortaleza de Santa Cruz de Anhatomirim e pela Fortaleza de São José da Ponta Grossa em Jurerê (https://fortalezas.org/?ct=fortaleza&id_fortaleza=12)

Como fazer?

  1. Siga o material didático da aula sobre a criação de objetos arquitetônicos em Blender disponível em: Criando seu Primeiro Modelo em Blender
  2. Utilize a opção ControlNet de stableDiffusion para imaginar visualizações das fachadas dos prédios a partir de figuras geradas a partir das plantas e fachadas;
  3. Crie panos de fundo e paisagens para dar ambiência ao seu game utilizando também a IA gerativa;
  4. Para criar a estrutura do seu prédio com base na planta baixa ou na modelagem AutoCAD da fachada, siga o tutorial de como utilizar plantas e desenhos para gerar objetos em ambientes 3D disponível no enunciado deste trabalho aqui: Modelagem Realista de um Navio Histórico de Florianópolis com base em seu Projeto
    1. Modeling a ships hull in Blender (baseado em uma planta desenhada…) – https://www.youtube.com/watch?v=vtMuy1gUSf8
  5. Recorte as texturas ou a fachada inteira dessas imagens geradas com a inteligência artificial gerativa e utilize as como textura no seu modelo 3D: Aplicando Texturas em Blender

Workflow-CG-stableDiffusion-ambiente

Adiante alguns exemplos da fachada do “armazém da praia” da Fortaleza da Ilha do Anhatomirim re-imaginada pelo stableDiffusion:

 

Created with GIMP

Screenshot from 2023-05-27 15-57-10

Screenshot from 2023-05-27 15-51-20

Screenshot from 2023-05-27 12-45-51

O gamer finlandês Jussi Kemppainen tem feito bastante experimentos tanto na criação de personagens quanto na criação de ambientes para games utilizando Inteligência Artificial gerativa e tem publicado alguns tutoriais e relatos de suas experiências online. Dê uma olhada no material abaixo: https://echoesofsomewhere.com/2023/05/17/the-labyrinth-part-1/

Jussi-Kemppainen

Usando stableDiffusion para ajudar a gerar o seu personagem 

Vamos usar Inteligência Artificial gerativa tanto para sugerir uma aparência para o seu personagem como para gerar as texturas que depois você vai utilizar para prover realismo ao seu boneco. Os movimentos do boneco serão resultado da nossa atividade de captura de movimentos no laboratório TECMIDIA. Temos uma grande biblioteca de captura de movimentos disponível em    e também estamos capturando novos todo semestre.

O tema do seu personagem será o imaginário de Franklin Cascaes. Para ver mais sobre essa ideia olhe a nossa página sobre o projeto: cyberCascaes – a arte de Franklin Cascaes reimaginada por uma inteligência artificial

Como fazer?

  1. Siga o material didático da aula sobre a criação de personagens em Blender disponível em: Criando Personagens em Blender. Comece escolhendo um personagem do acervo de Franklin Cascaes ou de outra fonte;
  2. Utilize a opção img2img de stableDiffusion (preferencialmente utilizando a interface gráfica AUTOMATIC1111) para imaginar visualizações de robôs inspirados em personagens de Franklin Cascaes;
  3. Utilize a forma corporal das imagens de robôs geradas para criar modelos 3D do seu personagem. O gamer finlandês Jussi Kemppainen tem feito bastante experimentos tanto na criação de personagens quanto na criação de ambientes para games utilizando Inteligência Artificial gerativa e tem publicado alguns tutoriais e relatos de suas experiências online. Dê uma olhada no material adiante: https://echoesofsomewhere.com/2023/05/17/the-labyrinth-part-1/
  4. Importe para o Blender e registre o esqueleto e os movimentos das seqüências de MoCap que você escolheu para os movimentos do seu personagem. Lembre-se que o enunciado do modelo hierárquico pede pelo menos duas seqüências de movimento diferentes, como andar, correr, chutar, lutar, etc.
  5. Recorte as texturas  dessas imagens geradas com a inteligência artificial gerativa e utilize as como textura no seu modelo 3D;

…agora é só importar do Blender para o game engine!

Workflow-CG-stableDiffusion-personagem

Como nós vamos avaliar?

Uso de Arte Computacional por meio de Inteligência Artificial Gerativa na Computação Gráfica não está previsto no nosso Programa de Ensino e por isso as tarefas descritas aqui são opcionais e a sua execução conta até 2 pontos adicionais tanto na tarefa de Modelagem com Blender quanto na tarefa de Personagem com Modelo Hierárquico em Game Engine. 

Critérios de avaliação adicionais em cada um dos dois trabalhos:

  1. +1 ponto na nota do trabalho: Grupo fez uso efetivo de técnicas de inteligência artificial gerativa na criação de um personagem ou de texturas para objetos arquitetônicos/panos de fundo/paisagens (deve estar documentado no seu documento final de descrição do game com o processo de geração do modelo, preferencialmente através de imagens intermediárias e capturas de tela da geração)
  2. +1 ponto na nota do trabalho: Grupo conseguiu resultados convincentes e realistas com uma melhora da qualidade do realismo do game, em linha e comparável a exemplos disponibilizados em fóruns e redes sociais (eu sei que esse critério é subjetivo, mas fica difícil avaliar qualidade em Arte Computacional de outra forma…)

Observe estes pontos adicionais podem ser obtidos tanto no trabalho de modelagem 3D quanto no trabalho de personagem com o modelo hierárquico em game, os pontos que você obtiver aqui não vão se refletir sobre a sua nota no sistema gráfico interativo que é um trabalho de programação manual.

P.S.: os arquivos do projeto fortalezas multimídia são todos em AutoCad e não em bitmaps. Para poder gerar imagens que você possa utilizar tanto com o tutorial de criação de objetos 3D com base em plantas e fachadas quanto para usar como semente para a geração de uma visualização com inteligência artificial gerativa você precisa carregar os projetos AutoCAD em alguma visualizador gratuito (há muitos na internet, alguns funcionam online, outros você pode instalar no seu computador) e exportar a visualização na forma de imagem, como é o caso do Armazém da Praia, acima. Isso dá algum trabalho e nós sugerimos que você contate os seus colegas e vocês dividam esse trabalho e depois compartilhem as imagens, enviando-as também ao professor, para que ele possa disponibilizar online e nos próximos semestres a turma não tenha esse trabalho de novo.

Material no Medium & Redes Sociais sobre stableDiffusion 

Páginas Explicativas

 

  • Comparação SD2, Dall-E e MJ4

 

Inpainting

A inteligência artificial gerativa para criação de imagens introduziu um novo termo no processo de criação de imagens digitais: inpainting. Inpainting pode ser definido como a introdução inteligente de um texto descrevendo uma sub-imagem em uma outra imagem através do uso de inteligência artificial gerativa, com o objetivo de refinar um detalhe dessa imagem.

Neste processo você manualmente seleciona a região da imagem-alvo que deve receber a sub-imagem objeto e a inteligência artificial gerativa usa os conhecimentos e informações nela treinados para gerar, adaptar e harmonizar a imagem objeto à imagem-alvo maior, de forma que ela pareça fazer “naturalmente” parte da imagem-alvo, com as suas fronteiras se integrando ao contexto iconográfico ao seu redor. A imagem objeto pode ser uma coisa simples como um rosto que é, de forma “inteligente”, substituído na imagem-alvo, quanto toda uma sub-cena de uma cena maior. Tanto o texto que vai gerar a imagem alvo quanto a imagem objeto podem ter sido previamente geradas utilizando-se inteligência artificial gerativa. Uma forma de arte digital baseada em inteligência artificial gerativa que faz uso massivo de inpainting é a geração de stelfies – veja mais adiante.

Utilizar inpainting na prática é uma coisa não tão trivial e abaixo oferecemos alguns tutoriais disponíveis na Internet:

Refinamento do treinamento e DreamBooth

Existem várias redes neurais generativas pré-treinadas, de código aberto e uso gratuito, todas elas derivadas do stableDiffusion original. Nos exemplos desta aula aqui nós estamos usando as redes stableDiffusion 1.5, 2.0 e 2.1. As versões mais novas de stableDiffusion foram treinadas no conjunto de dados LAION (veja a explicação mais abaixo), que não necessariamente é um conjunto de dados que possui muitas coisas da temática aqui da Ilha de Santa Catarina que nós abordamos nos games e animações que fazemos na nossa disciplina.

Por exemplo,  se você tentar convencer stableDiffusion, não importa em qual versão, a criar uma imagem da Ponte Hercílio Luz, o resultado vai sempre se parecer com alguma ponte que deve figurar repetidamente no conjunto LAION, notadamente a ponte Golden Gate (se você no seu prompt insistir que se trata de uma ponte pênsil) ou a ponte do Brooklin (se você insistir que se trata de uma ponte urbana em uma grande capital)… Esse viés é natural porque a rede neural só vai conseguir gerar aquilo que ela aprendeu.

Como mudar isso? Redes neurais de aprendizado profundo permitem, ao contrário daquelas antigas redes Backpropagation, ter o seu treinamento refinado. Na terminologia de aprendizado profundo, isso é chamado de fine-tuning. Para isso você continua a treinar a rede, “congelando” uma parte dela e treinando apenas a parte de entradas e saídas com os novos conceitos que você deseja que ela aprenda. Como muitas coisas de cunho geral ela já aprendeu, com essa sintonia fina da rede é possível fazer com que ela “saiba” agora os detalhes desses novos conceitos.

Existem basicamente duas maneiras de fazer isso:

  1. Continuar o treinamento da rede no modo fine-tuning, utilizando tanto um conjunto grande de novas imagens quanto um novo arquivo JSON com as legendas em texto para cada uma dessas imagens. Essa é a forma mais complicada e você vai precisar de um computador poderoso ou vai ter que rodar esse treinamento em uma plataforma na nuvem como o Google Colab, vast.ai, HuggingFace ou Paperspace. Esse processo só é interessante se você quiser treinar todo um novo universo de conceitos na rede.
  2. Realizar um fine-tuning específico para que a rede aprenda apenas um único conceito novo. Esse é um processo bem mais simples e você só necessita de uma mão cheia de imagens desse novo conceito e de uma única legenda descrevendo o conteúdo de todas essas imagens. Esse processo foi denominado pelos autores de “balcão de sonhos” ou DreamBooth: você vai ensinar a rede a “sonhar” imagens com um novo elemento dentro delas.

O primeiro processo extrapola o contexto de uma disciplina de graduação e não vamos tratar aqui. Instruções para você fazer o DreamBooth vão abaixo:

Se você está mesmo interessado em passar trabalho e quiser realizar uma sintonia fina da rede inteira e fazê-la aprender uma meia dúzia de conceitos novos todos de uma vez e tiver a paciência de gerar um conjunto grande de dados para descrever esses conceitos, então você pode usar a opção de realizar treinamento de sintonia fina da rede que vem junto com AUTOMATIC1111. Esteja preparado para treinar a rede neural por muito tempo… Lembre-se também que se você obtiver as suas imagens utilizando um web crawler, você deve se certificar que as imagens não possuem restrições de uso que o impeçam de usá-las aqui na nossa disciplina.

Imagens para 3D

Vídeo com stableDiffusion

About the Author

possui graduação em Ciências da Computação pela Universidade Federal de Santa Catarina (1989) e Doutorado Acadêmico (Dr. rer.nat.) em Ciências da Computação pela Universidade de Kaiserslautern (1996). Atualmente é professor Titular da Universidade Federal de Santa Catarina, onde é professor do Programa de Pós-graduação em Ciência da Computação e dos cursos de graduação em Ciências da Computação e Sistemas de Informação. Tem experiência nas áreas de Informática em Saúde, Processamento e Análise de Imagens e Engenharia Biomédica, com ênfase em Telemedicina, Telerradiologia, Sistemas de Auxílio ao Diagnóstico por Imagem e Processamento de Imagens Médicas, com foco nos seguintes temas: analise inteligente de imagens, DICOM, CBIR, informática médica, visão computacional e PACS. Coordena o Instituto Nacional de Ciência e Tecnologia para Convergência Digital - INCoD. Foi o criador e primeiro Coordenador do Núcleo de Telessaúde de Santa Catarina no âmbito do Programa Telessaúde Brasil do Ministério da Saúde e da OPAS - Organização Pan-Americana de Saúde e criador do Núcleo Santa Catarina da RUTE - Rede Universitária de Telemedicina.