• Nenhum resultado encontrado

3.4 RESULTADOS E DISCUSSÃO

3.4.3 Considerações gerais

O presente trabalho teve como objetivo inicial o desenvolvimento de um framework, porém a aplicação desenvolvida ainda não se enquadra nesse conceito, apesar desse trabalho já disponibilizar alguns trechos de código para o desenvolvedor. Resolveu-se então identifica- la como aplicação.

Para que o aluno pudesse aprender os conceitos da Computação Gráfica de forma mais simplificada seria necessário disponibilizar além de um framework um ambiente onde o aluno pudesse treinar e trabalhar as funções disponíveis nele. Como não havia tempo hábil para o desenvolvimento dos dois, o framework e a aplicação, foi decidido focar no desenvolvimento da aplicação.

Logo, o segundo objetivo específico que era a disponibilização de um tutorial utilizando o framework chegou mais perto do novo objetivo principal, pois este era desenvolver uma aplicação que permitisse o estudo da computação gráfica a partir da biblioteca OpenGL e que utilizasse a linguagem C++ como base. E esse conceito foi utilizado para o desenvolvimento da aplicação resultante, a qual permite que o aluno trabalhe com diversos conceitos da biblioteca OpenGL com base na linguagem de programação C++.

Como o trabalho não seguiu a linha do framework algumas funcionalidades não puderam ser implementadas, como permitir que o usuário do framework utilize as funções definidas em seu programa e permitir que a partir das funções criadas sejam adicionadas novas funções. Porém, pode-se afirmar que como a aplicação desenvolvida é de código aberto, o usuário pode pegar funções prontas para reaproveitar em seu código. Outro fator é que como existe a janela de código-fonte, o código apresentado por ela também pode ser utilizado pelo usuário em suas aplicações. Nesse caso, o usuário pode montar o exercício na aplicação, visualizar se a cena resultante era o esperado e analisar o código-fonte gerado por cada peça. Então, ele pode adaptar o código-fonte gerado e colocar em sua aplicação.

O trabalho realizado pode ser considerado um Software Educativo (ver seção 2.1.1), pois tem por objetivo favorecer o processo de ensino-aprendizagem na área da computação gráfica com foco nas transformações geométricas. A partir de exercícios propostos por um professor, o aluno pode colocar em prática o conteúdo aprendido em sala de aula e esclarecer eventuais dúvidas que venha a ter. O que mais o caracteriza como um SE é a interação entre o software, o aluno e o professor. Dessa forma, o trabalho produzido pode ser considerado um SE com ênfase em simulação de cenas 3D com a utilização da lógica. Ainda, pode-se dizer

66

que se enquadra na classificação de ser interativo com o usuário permitindo assim um melhor aproveitamento pedagógico. Ao mesmo tempo, a aplicação desenvolvida tem uma ideia lúdica, pois se baseia em peças, como as de um quebra-cabeça do mundo real, para montar os exercícios propostos.

Para a aplicação foram desenvolvidas rotinas para controlar a movimentação das peças do exercício. Inicialmente estava sendo utilizada a cor alpha do pixel para retornar a peça selecionada. Assim, cada peça utilizava o padrão RGB Alpha (RGBA) onde no campo alpha era indicado o identificador da peça. Dessa forma, nenhuma peça possuía o mesmo valor para alpha. Então, quando fosse clicado com o mouse na tela, as cores do pixel eram lidas e a partir da cor alpha retornada sabia-se o identificador da peça selecionada. No início funcionou tranquilamente, mas após certo tempo o procedimento passou a funcionar apenas no sistema operacional MacOS, não funcionando no Windows. Não foi descoberto o motivo do problema, pois até mesmo os exemplos anteriores que utilizavam o alpha e funcionavam no Windows, passaram a não funcionar mais. Então a decisão tomada para resolver o problema foi alterar a estratégia de seleção da peça. Todas as classes correspondentes às peças foram modificadas para comportar uma boundingbox e foram feitas rotinas para selecionar a peça a partir dela. Como havia uma peça côncava teve de ser analisado também se a peça foi selecionada a partir do algoritmo da ScanLine. Dessa forma, o clique sobre as peças e sua seleção voltou a funcionar.

Outro problema encontrado após a modificação do código para a seleção através da boundingbox foi que as matrizes de transformação das peças filhas eram zeradas ao adicioná- la a um pai. Isso ocorre devido a multiplicação das matrizes de transformação. Assim, quando a filha era selecionada pela boundingbox, o algoritmo criado não retornava que a peça realmente estava selecionada, pois o algoritmo se baseou na matriz de transformação de cada peça. Para resolver o problema da seleção de uma peça filha, foi subtraído do ponto clicado a altura das peças anteriores. Dessa forma, era verificado o ponto dentro da boundingbox como se este iniciasse do zero.

No decorrer do trabalho, foram criados controles para as ações das peças (ver Quadro 14). Porém, o código não foi preparado para que as peças filhas sofressem o mesmo efeito. Um dos motivos foi que as peças sucessoras e antecessoras pertencem a listas diferentes, e uma trata o índice da peça como seu próprio identificador, enquanto a outra trata o identificador e o índice sendo diferentes.

Foi decidido desenvolver o trabalho apenas com o cubo e três transformações possíveis sobre ele. Um número restrito de comandos, porém tendo essa base, fica mais fácil de o aluno

67

alterar o tipo da peça e criar funções novas. Foram escolhidas essas funcionalidades, pois a maior dificuldade dos alunos de computação gráfica é entender e visualizar as matrizes de transformação de um objeto, principalmente em um espaço 3D. Com as peças de transformações o aluno pode realizar vários testes na aplicação e ver seu efeito no espaço gráfico, assim como pode analisar a matriz de transformação resultante, podendo aprimorar seu conhecimento a partir da aplicação.

O resultado obtido foi satisfatório, pois todos os requisitos elencados foram alcançados, assim como todos os objetivos específicos apresentados na seção 1.1.

Para testar a aplicação foram realizadas algumas análises com base nas etapas de deslocamento da peça dentro da bandeja após ser adicionada (Figura 16) de inserção de peças filha dentro de uma peça pai (Figura 18), de alteração do valor da coordenada x em uma

translação (Figura 22). Todas elas acompanhadas da apresentação de seu código-fonte na janela de códigos. A seguir são apresentados os resultados obtidos na análise de uso de performance e de usabilidade, finalizando com o comparativo dos trabalhos correlatos com o presente trabalho.

Em paralelo ao desenvolvido desse trabalho, ocorreu o trabalho de SCHRAMM (2012) que teve a mesma ideia fundamental de criar uma aplicação educacional, porém como cenário o estudo de shaders dentro da disciplina de iOS na FURB. Foram padronizados os nomes do cenário da aplicação, para que os alunos que cursassem as duas matérias se familiarizassem melhor aos ambientes.

Documentos relacionados