Solar System Simulator

O programa desenvolvido é um simulador (incompleto) de Sistema Solar.

Feito para rodar nos browsers com WebPlayer do Unity (Não funciona no Chrome), o programa mostra os planetas orbitando o Sol, com tamanhos e orbitas fora de escala.

A ideia do programa era desenvolver uma aplicaçao e criar um minimapa, que seja possível interagir.

Ao clicar em um planeta, a camera deve acompnhar esse objeto. Se utilizar o mini mapa o mesmo efeito pode ser conseguido.

Link: http://xuti.net/labs/solarsystem/

Mecanismos disponíveis para a avaliação de aprendizes através de computadores

Por Dalton Lopes Martins

1. INTRODUÇÃO

Avaliar, sob determinada visão pedagógica, é questionar e refletir sobre o processo de transmissão da informação e a forma como essa informação transforma-se em conhecimento. A computação e a ciência da informática trouxeram a automatização de vários processos técnicos, científicos e industriais. A questão em relevância no contexto desse artigo é de que forma a avaliação pode ser encarada como um processo, de que forma a computação pode se inserir nesse processo para automatiza-lo, através dos mecanismos de que dispomos hoje.

2. EMBASAMENTO

O levantamento bibliográfico para o embasamento deste artigo levou em consideração questões que pudessem levantar reflexões a respeito do processo da avaliação, em primeiro momento. A partir disto, quando esse processo foi melhor compreendido, passou-se a pesquisar a forma como a avaliação pode ser realizada através do uso de computadores. Tendo como referência temas como agentes, lógica fuzzy, bancos de dados e analisadores de lingüísticos, o resto dos artigos complementou a informação necessária nos temas acima citados.

3. OPINIÃO

Segundo o artigo “O processo de avaliação na educação à distância”, há várias formas diferentes de se enfocar a avaliação: tradicional (utiliza de verificação de curto prazo e prazo mais longo; punição e reforço positivo), tecnicista (avaliação de comportamentos observáveis e mensuráveis, controle de comportamento face a objetivos pré-estabelecidos), libertadora (a verificação direta da aprendizagem é desnecessária, pois a avaliação ocorre da prática vivenciada entre educador/educando e a auto-avaliação em termos de compromisso assumido com a prática social), progressista (a avaliação é realizada a qualquer momento, pois sua preocupação é diagnosticar falhas e valoriza outros instrumentos que não as provas). Dentro do contexto de cada uma das formas acima mencionadas, os computadores podem ser usados.

No entanto, antes de se partir para uma análise propriamente dita dos mecanismos disponíveis para a avaliação de aprendizes através dos computadores deve-se questionar o que se deseja avaliar. Em uma abordagem generalista, o artigo “Evaluation for distance educators” enumera uma série de pontos a serem observados a esse respeito: uso da tecnologia, formato das aulas, clima do curso, quantidade e qualidade da interação com outros estudantes e com o professor, conteúdo do curso, testes, serviços de suporte, realizações dos estudantes, atitude dos estudantes e o professor. Esses tópicos oferecem variadas métricas que podem se adaptar a diferentes visões pedagógicas a respeito do processo da avaliação, rompendo a barreira limitante da visão tradicional.

Algumas ferramentas que podem auxiliar no processo de obtenção e análise dessas métricas acima mencionadas são propostas nos artigos de embasamento. O artigo “Ferramentas de análise e acompanhamento de cursos” propõe uma técnica que analisa o log (arquivo de registro de acesso de páginas http) gerado automaticamente pelos servidores e realiza uma filtragem de onde é gerado um arquivo com as informações mais relevantes (identificação do usuário, data e hora da utilização e a página acessada). Dessa forma pode-se gerar um banco de dados e analisar as informações para se levantar características comportamentais do usuário em relação ao sistema.

Já em PEREIRA RODRIGUES (2000), propõe uma técnica de avaliação através de agentes, que podem interagir com o ambiente, comunicando-se com outros agentes, influenciando o comportamento dos mesmos, ou seja, possibilitando a mudança de estratégia ou metodologia de ensino, caso se perceba um baixo desempenho do estudante.

Dessa forma, o agente interage com as ações do estudante no sistema computacional e pode auxiliar na análise de vários quesitos que não podem ser diretamente medidos através de provas e testes tradicionais. Já em ZHOU (1999), é proposta uma técnica baseada em lógica fuzzy, que está ligada a análise de situações onde não há condições de contorno bem definidas para um conjunto de atividades ou observações, dando determinados pesos a certas ações previamente estabelecidas e obtendo-se uma métrica relativa a essa análise. Essas algumas das ferramentas propostas e que somente podem ser implementadas através do auxílio de computadores.

No artigo “O processo de avaliação na educação à distância” é mencionado alguns sistemas de avaliação na web. Vale a pena aqui citar alguns. CyberQ é um sistema onde tem-se a implementação de uma estratégia de avaliação multi-característica e multi-método de vários alunos e em diferentes níveis, agregando um grande número de informações para avaliações futuras. Carnegie Mellon University é um sistema baseado em bancos de dados, onde é armazenado todo o conteúdo do curso, através de informações declarativas, e processadas por um sistema genérico. WebCT é um sistema que tem a capacidade de registrar conversas em um banco de dados, permitindo o monitoramento dessa conversação; também permite gerar perguntas on-line que são feitas enquanto o aluno está acessando a página.

Todos esses sistemas agregam determinadas técnicas e tecnologias que permitem várias abordagens pedagógicas e praticamente contemplam todas os pontos sugeridos como métricas para a realização de uma avaliação completa do processo educativo, permitindo-se considerar diferentes perfis de estudantes, suas capacidades e limitações, possibilitando-se dessa forma que a avaliação fuja da estigma de um processo traumático para o estudante e se torne um mecanismo de construção efetivo do conhecimento.

4. CONTRA-POSIÇÃO

Em P. de SOUZA, é dito que um sistema de perguntas e respostas por computador deve ter suas respostas bem programadas, sem a menor chance de gerar dúvidas. Acredito que isso seja um ponto consideravelmente limitante do uso computador, não permitindo e abrindo espaço para a criação de padrões novos de resposta, tornando-se o processo algo mais mecanizado e padronizado do que se deveria esperar de uma avaliação completa do processo educativo.

5. BIBLIOGRAFIA

1. O processo de avaliação na educação à distância. Universidade Federal do Rio Grande do Sul.
2. Ferramenta de análise e acompanhamento de cursos. Projeto Sapiens, Unicamp, 2000.
3. Evaluation for Distances Educators. College of Engineering, University of Idaho.
4. P. DE SOUZA. A avaliação como prática pedagógica. Associação Brasileira de Educação Agrícola Superior – ABEAS.
5. PEREIRA RODRIGUES, Alessandra, (2000). Agente avaliação de ensino e aprendizagem em EAD. Universidade Federal do Rio Grande do Sul, 2000.
6. ZHOU, Duanning, MA, Jian, QIJIA, Tian, KWOK, Ron C. W., (1999). Fuzzy group decision support system for project assessment. Proceedings of the 32nd Hawaii International Conference on System Sciences, 1999

Agentes de Software: uma breve introdução

Por Dalton Lopes Martins

Após a explosão do uso doméstico da Internet, na metade dos 90, uma tecnologia tornou-se a coqueluche dos desenvolvedores de software para ambientes de rede e sistemas distribuídos: os agentes de software. No entanto, agentes não são programas que rodam apenas em ambientes voltados para redes, como veremos a seguir, mas podem ser utilizados em várias situações, como agentes de interface (lembram-se do “chato” clip do Word?), gerenciadores de desktop, entre outras aplicações.

Mas, o que define, o que determina que um programa seja um agente de software? Um agente é, antes de mais nada, um programa desenvolvido em uma linguagem de programação qualquer. No entanto, há algumas características na implementação de um agente que o diferenciam de um programa clássico.

O agente deve possuir alguns requisitos necessários para que seja considerado como tal: um ciclo de vida contínuo no tempo, um ambiente de atuação, sensores que recolham informações do ambiente, atuadores que causem mudanças no ambiente e autonomia, ou seja, funcionamento independente da interferência do usuário. Agora, podemos definir melhor cada um desses requisitos.

O ambiente é a área de atuação do agente e pode ser, teoricamente, qualquer parte independente que possamos identificar num sistema. Podemos considerar como ambiente o sistema de arquivos local onde podemos ter rodando um agente de mirror, que espelha o conteúdo de um diretório em outro; podemos considerar como ambiente a Internet no caso de agentes spider, que caminham de site em site verificando a validade de links; podemos considerar como ambiente uma LAN (Local Area Network) no caso de um agente que verifique os usuários conectados e as aplicações que usam; ou, até mesmo podemos considerar um ambiente a própria área de desktop do sistema operacional no caso de um agente de interface.

Os sensores são os mecanismos que utilizamos para captar as mudanças que ocorrem no ambiente, como os sockets (mecanismo que cria uma conexão entre duas máquinas através de uma porta de comunicação e do IP de ambas) e os métodos que permitem obter informações do sistema, como rotinas para obtenção de data, hora, listagem de um diretório, etc.

Os atuadores são os mecanismos que utilizamos para efetuar alguma alteração no ambiente, como os próprios sockets (a conexão criada é bi-direcional, permitindo tanto ler quanto escrever), métodos para apagar arquivos, para desenhar algum objeto na tela, exibir informações, etc.

O ciclo de vida de um agente representa o tempo em que ele se encontra em execução no objetivo de realizar uma determinada tarefa. Após esse tempo, o processo que executa o agente irá morrer ou ficará “dormindo” durante outro intervalo de tempo. Como exemplo, podemos imaginar um agente que realiza backup de um servidor FTP para o disco local da máquina de um usuário. Se o agente ficar o tempo todo lendo o servidor, a máquina do usuário irá ficar praticamente paralisada. No entanto, o agente lê as informações de arquivos do servidor, atualiza no cliente e dorme por um tempo, retornando após para novamente procurar por mudanças no ambiente.

A autonomia é a principal característica de um programa que o torna um agente. Ela indica que o programa será executado independente da intervenção do usuário, ou seja, ele será capaz de controlar seu próprio fluxo de ações.

Desta forma, temos caracterizado os requisitos que tornam um programa um agente. A partir disso, podemos imaginar diferentes aplicações e tecnologias que possam servir como motivação e base de apoio no desenvolvimento de programas orientado a agentes na programação de jogos de computador.

Agentes de software e desenvolvimento de Jogos

No desenvolvimento de jogos, um fator importante e essencial é a inteligência que há por trás da interface, ou seja, o mecanismo que vai processar as ações tomadas pelo usuário e gerar uma reação por parte do sistema ao usuário. A programação clássica dessa inteligência se dá através do paradigma comportamental, ou seja, o programa supõe uma série de comportamentos possíveis por parte do usuário e, com base nisto, irá gerar uma reação também previamente determinada. O problema dessa forma de lidar com a inteligência do sistema é que ela limita as ações possíveis por parte do usuário e permite que o mesmo descubra o padrão de análise de movimentos utilizado pelo programa, gerando aquelas cômicas situações onde o usuário cria mecanismos para burlar o sistema e assim avançar no jogo.

Os agentes podem ser utilizados para resolver esses problemas e criar jogos mais dinâmicos e interativos. A autonomia de execução de um agente pode ter vários níveis de complexidade, permitindo desde o nível mais básico onde o agente possa controlar suas próprias ações, até o nível mais alto, onde o agente possa tomar decisões orientado a metas específicas e utilizar mecanismos de análise para verificar se está sendo bem sucedido ou não.

Esse nível de programação exige por parte do programador o conhecimento de alguns conceitos que possam auxiliar no modelamento do agente, como processamento distribuído, threads que permitam a execução paralela de pedaços de um programa, construção paralela de sensores e atuadores que permitam o nível de interação desejada, entre outros fatores.

Iremos trabalhar cada um desses conceitos ao longo do tempo e fornecer exemplos de aplicações desenvolvidas na linguagem JAVA. Por enquanto, fica a idéia e a motivação inicial para se considerar uma nova forma de programação no desenvolvimento de jogos para computadores.

Introdução a História da Computação Gráfica

Por Alessandro Straccia

Podemos dizer que o marco inicial da computação gráfica aconteceu em 1968, na Universidade de Utah, através do professor David Evans e o Dr. Ivan Sutherland. Numa época onde os (poucos) computadores eram dedicados principalmente ao cálculo militar e financeiro, eles enxergavam além: para os dois, os computadores deveriam interagir com o usuário, executando tarefas das mais variadas.

Em 1968, a única interação com o usuário eram os cartões perfurados, o que dificultava a variedade de utilidades da máquina. Foi daí que nasceu a idéia de utilizar gráficos e desenhos para facilitar o trabalho.Assim nasceu a Evans&Sutherland, uma empresa pioneira no ramo da computação gráfica. Sua principal atividade era a criação de aplicações gráficas para simulação. Nela nasceram os primeiros conceitos de desenho vetorial, representação tridimensional em ambiente bidimensional, mapeamento de texturas, entre outros avanços. Foi na E&S também que foram descobertos os grandes gênios da computação gráfica atual, como Jim Clark (fundador da Silicon Graphics), Ed Catmull (fundador da Pixar) e John Warnock (fundador da Adobe). Hoje em dia, a E&S está voltada totalmente para a criação de ambientes simulados, tanto para a indústria militar e civil (simuladores de vôo e de tráfego), quanto para a indústria do entretenimento (cinemas interativos). Entre no site deles para dar uma conferida: www.es.com.

A segunda grande revolução podemos dividir em duas partes: a criação do computador pessoal, em 1976, com o Apple I, que democratizou a utilização do computador. Vale lembrar que a IBM só criou o seu primeiro PC em 1981, e em 1979 a Apple já tinha o Apple II, que rodava gráficos e imagens coloridas.

A segunda grande revolução foi em 1983/84, com a criação do Macintosh, que introduziu ao mundo a GUI (Graphic User Interface), e é a mãe de tudo que conhecemos hoje em dia em termos de computação gráfica. Já imaginou criar um desenho através de linha de comando? Em 1982 tivemos dois grandes acontecimentos: a criação da Adobe Inc, uma das pioneiras em aplicações gráficas (no início, apenas para desktop publishing – depois para todo o mercado), e a criação da Silicon Graphics, que se especializou na criação de hardwares específicos para aplicações gráficas.

Em 1984 eles lançaram a primeira workstation voltada totalmente para gráficos 3D. A criação do Amiga, da Commodore, também foi muito importante para a computação gráfica. Em uma máquina potente e relativamente barata, os profissionais podiam rodar programas de animação 2D, 3D, edição, composição, mixagem de áudio e mais uma infinidade de coisas. Muitas produtoras de vídeo ainda são baseadas, até hoje, em plataforma Amiga equipada com a famosa Vídeo Toaster. Até o começo da década de 80, vimos toda a base para a indústria da computação gráfica ser criada. Graças a esses pioneiros, tivemos em 1982 o primeiro filme a utilizar efeitos de computador, Tron, da Disney.

George Lucas os utilizou também em Guerra nas Estrelas e, a partir daí, a computação gráfica estava estabelecida em Hollywood. Claro que não podemos falar de computação gráfica sem falarmos nos jogos (que, inclusive, é o principal assunto deste site).

Como seria muito extenso incluir este capítulo especial e saudoso neste texto, recomendo que vocês acessem o site Retrospace, da Outerspace (http://outerspace.terra.com.br/retrospace/). Está bem completo e, melhor, em português.

Com a evolução do hardware e, principalmente, do software, vimos coisas inacreditáveis na telona. Quem diria que, em 1991, veríamos um ser de metal líquido se transformar numa pessoa (Exterminador do Futuro 2). Em 1993 os dinossauros voltaram à vida através do computador, em Jurassic Park. Em 1995 tivemos o primeiro filme criado no computador, Toy Story.

Infelizmente nosso Cassiopeia – que começou a ser produzido antes de Toy Story – não conseguiu ser lançado antes dele por problemas técnicos e financeiros. Mas é nossa a honra de ter o primeiro filme criado inteiramente no computador, já que Toy Story escaneou a geometria dos personagens a partir de modelos reais. Algumas curiosidades a respeito de Cassiopeia:

  • Foi utilizado um software de animação e modelagem 3D chamado Topas Animator, que era obsoleto já naquela época;
  • Os personagens e cenários foram criados a partir de formas geométricas simples, como esferas, cubos e cilindros;
  • O “render” foi feito numa rede com 20 computadores 486. Nos últimos meses de produção, os computadores foram roubados, o que atrasou ainda mais a finalização;
  • Cassiopeia 2 está sendo produzido, mas desta vez com equipamentos de ponta e com o software 3D Max, um dos mais utilizados hoje em dia. A última notícia a respeito do filme é que os produtores estão procurando jovens talentos em animação 3D para se juntarem à empreitada.

Nos dias de hoje, estamos vivendo várias revoluções ao mesmo tempo. A maior delas é a democratização das ferramentas de animação e computação gráfica. Se a Apple democratizou o uso dos computadores pessoais através do seu Apple II e Macintosh, o PC hoje é a plataforma mais barata e eficiente para a Computação Gráfica. Praticamente todos os softwares de animação acabaram sendo migrados para a plataforma Windows NT.

Há alguns anos, para se ter um equipamento capaz de rodar esses softwares, era necessário uma plataforma Silicon Graphics (sob o custo de, pelo menos US$ 10.000,00), e um programa de animação que custava a metade, ou até mais que o valor do hardware. Hoje em dia, com R$ 3000,00 você consegue um PC poderoso. A partir de US$300,00 você tem acesso aos principais programas gráficos e de animação.Isso significa que, em sua própria casa, você tem a possibilidade de aprender os principais softwares. Tem até a possibilidade de fazer um filme inteiro no seu PCzinho. Muitas produtoras de animação se aproveitaram dos baixos custos atuais pra entrar no mercado e mostrar o seu valor.Outros fatos importantes que estão revolucionando o mundo da computação gráfica:

  • O cinema digital, que está reduzindo os custos e facilitando a manipulação das imagens e cenas no computador;
  • As novas ferramentas de animação, que estão eliminando as tarefas repetitivas e dando mais tempo aos artistas para aprimorarem as técnicas mais complexas;
  • As modelos virtuais, que literalmente estão dando vida aos seres de computador. Veja Final Fantasy, O Senhor dos Anéis, Guerra nas Estrelas Episódio I (e aguarde o lançamento do 2o filme, que trará mais avanços), e um filme irá retratar bem esse mundo, Simone, com Al Pacino.
  • Hardwares cada vez mais poderosos, que estão diminuindo o tempo de render e de pré-visualização.

É isso aí. É claro que deixei de falar muitas coisas aqui neste texto. Vou continuar minhas pesquisas e num futuro próximo estarei fazendo uma versão 2.0 desta história.