Muito mais que uma lenda, um projeto de CG
Desenvolvimento, Games, Inutil December 28th, 2008Completando o clima de saudosismo e reverência ao zelda, vou deixar aqui algo que marcou minha passagem pela UFSCar, o projeto final de computação gráfica (sou bacharel em ciência da computação, tendo ingressado em 2004).
Os requerimentos para este projeto eram mais ou menos esses:
- Nada de ferramentas de modelagem (C4D, 3DSMAX, Maya, Blender, enfim…)
- Nada de objetos já prontos, apenas sendo importados
- Deve-se usar curvas de Hermite para alguma coisa (sugestão: movimento da câmera ou controle de aceleração de objetos)
- Devem ser renderizados pelo menos N (se não me engano N eram 2) objetos definidos por vértices.
E eis o resultado:
O projeto foi desenvolvido utilizando C#, com o port de openGL CsGL. O CsGL foi descontinuado, hoje a melhor opção para quem quer usar openGL com C# é o TAO Framework.
Esse foi um dos pouquíssimos trabalhos que não passou pelo controle de qualidade infalível do Jedi (Vinicius Pereira) – o cara que acha (pelo menos) um bug nas páginas do Terra por semana, mas felizmente deu tudo certo.
Devem ser dados os devidos créditos a:
- Jackson Borsatto: por descobrir como funciona o esquema das texturas e dos sons
- Nintendo: leia o post anterior
Bom, quem me conhece sabe que a minha passagem pela Universidade Federal de São Carlos não foi das coisas mais felizes que aconteceram na minha vida. Um tanto de expectativa frustrada, um momento emocional nada favorável, e uma penca de professores que adoram nivelar o pessoal por baixo… Pode se dizer que dos 3 anos inteiros que passei lá, foram aproveitáveis, no máximo, 2 ou 3 mêses (se juntar tudo) – o resto foi tempo literalmente jogado fora mesmo.
Mas, críticas ao modelo educacional medíocre à parte, tudo começou no começo da disciplina de computação gráfica. O professor titular não daria a matéria (não me lembro por qual razão), e veio um substituto, que não era especialista no assunto.
A primeira aula foi teórica, muitas matrizes, muitas multiplicações de matrizes, muito número, muito cálculo na mão, muitas pessoas dormindo. Depois da segunda aula, que foi um pouco mais prática eu estava <sarcasmo> SUPER MOTIVADO!!! </sarcasmo> Lembro que foi passado um trabalho (<sarcasmo>oba!</sarcasmo>), algo relacionado a desenhar um cubo usando openGL, em C/C++ (<sarcasmo>o que me deixou ainda mais feliz</sarcasmo>). Era um grupo de quatro pessoas, quando nos reunimos eu basicamente fiquei longe do computador, sentado num puff dando palpite e expressando meu amor e carinho por aquilo tudo.
No fim do dia, com o trabalho teoricamente finalizado, voltei pra casa e dei uma olhada no código… aquilo ali era matemática, e programação. Apesar de ser código nojento de C/C++, tinha lá a sua beleza. Consegui ver algumas possibilidades… Quando encontrei o CsGL então, programar em C#? Agora sim!
Foi quando eu disse, no dia seguinte, ao resto do grupo: “vou fazer um baú nesse negócio, e dele vai sair a triforce”. O que eu recebi como resposta foram risadas, que eu já esperava. Mas eu estava falando sério… Passei o próximo fim de semana lendo o red book e desenvolvendo a primeira parte do plano.
Na aula seguinte, já no laboratório, mostrei o que tinha feito para o restante do grupo. Rolou um certo silêncio, e a gente resolveu mostrar aquilo pro professor. Primeiro ele não acreditou que tinha sido algo feito por nós – o que me forçou a explicar o código. O que deixou ele feliz, o que fez com ele nos deixasse em paz para jogar Winning Eleven durante as aulas (o Jedi levava inclusive um gamepad pra rolar uns 1×1).
Ao longo do semestre o negócio foi ficando mais elaborado – cada semana com um objeto novo, até que em um certo ponto tínhamos quase tudo modelado e com texturas, só faltava fazer alguma coisa com aquilo tudo. À essa altura a especificação do trabalho final já tinha sido anunciada, e só não estavamos cumprindo a curva de Hermite.
O resto do pessoal do grupo colaborou fazendo boa parte os projetos idiotas que o professor pedia como trabalhos semanais – o tipo de coisa que eu definitivamente não colocaria minha mão.
Bom, depois que o Jackson me mostrou como funcionava o esquema dos sons, passei um dia todo brincando de diretor, pensando nos keyframes e nos deslocamentos de câmera (usando a bendita curva de hermite). No fim do dia eu lembro que não conseguia mais olhar pra cara daquele negócio – de tantas vezes que re-passei a cena para controlar as equações dos keyframes.
Mas o resultado foi bastante satisfatório, acho que deve ter sido a matéria mais produtiva e divertida (indiretamente) que eu tive na faculdade (tirando, é claro, as optativas de filosofia com o Wolfgang Leo Maar – uma das poucas figuras que tinha o perfil que eu esperava encontrar nos professores da faculdade). Foi algo que me deixou orgulhoso.
Pra quem se interessar (não custa tentar né?), pode baixar o código aqui. É uma solution de .net 2.0 (não tinha saído o 3.0/3.5 na época), mas com o wizard de conversão ela compila em 3.5 sem problemas. Todas as dependências estão inclusas, e tem um binário pronto também. O tamanho é isso tudo porque só colocamos as texturas e sons de última hora, e só encontramos uma API para “bmp” e “wav”.
Ah, só pra completar o post, fica aí uma dica, o “Dark Sage”, animação criada pelo Coloniser, no YouTube, é imperdível pra quem gosta de Zelda. A qualidade do curta é incrível:
[ ] ’s
Imprimir esse artigo!
Leia também:

Recent Comments