|
|
Ficha da DisciplinaDocenteJorge Cardoso ( Descrição da DisciplinaA programação de computadores é cada vez mais uma ferramenta essencial para os artistas e para os profissionais da área multimédia. Não só porque abre um novo leque de possibilidades no que concerne à criação artística, mas porque cada vez mais as equipas de trabalho são interdisciplinares e o conhecimento do vocabulário da computação facilita a comunicação com os profissionais da área. A cadeira de Programação para Multimédia é uma cadeira de introdução à programação de computadores. Não é necessária experiência prévia de programação por parte do aluno. Esta disciplina pretende fornecer aos alunos uma oportunidade para contactarem com conceitos de algoritmia e conceitos gerais sobre linguagens de programação. O aluno será incentivado a estruturar o pensamento de forma a resolver problemas através da programação do computador. Será utilizada a linguagem de programação Processing -- uma linguagem desenhada para a programação de imagem, animação e som -- para ilustrar os conceitos abordados. No final da disciplina, pretende-se que os alunos possuam as ferramentas necessárias para abordar outras linguagens de programação. Objectivos da DisciplinaApreensão dos conceitos fundamentais de algoritmia e de linguagens de
programação imperativas.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Exercícios Quinzenais |
14 valores |
|
|
EQ0 |
0.5 valores |
|
|
EQ1 |
6 valores |
|
|
EQ2 |
4 valores |
|
|
EQ3 |
2 valores |
|
|
EQ4 |
1 valor |
|
|
EQ5 |
0.5 valores |
|
|
Micro-projecto |
5 valores |
|
|
1ª Fase |
2 valores |
|
|
Código Final |
2 valores |
|
|
Relatório Final |
1 valor |
|
|
|
|
|
|
Assiduidade |
|
1 valor |
É imperativa a entrega atempada dos exercícios quinzenais! Trabalhos entregues fora da data limite não serão avaliados.
Notas finais acima de sete valores possibilitam a realização de um Exame de Recurso.
|
Semana |
Aula |
Exercícios Quinzenais |
|
1 |
Apresentação da disciplina |
Entrega EQ0 |
|
2 |
Tópicos Básicos:
|
|
|
3 |
Tópicos Básicos:
|
Entrega EQ1 |
|
4 |
Tópicos Básicos:
|
|
|
5 |
Tópicos Básicos:
|
Entrega EQ2 |
|
6 |
Tópicos Básicos:
|
|
|
7 |
Tópicos Básicos:
|
Entrega EQ3 |
|
8 |
Tópicos Intermédios:
|
|
|
9 |
Tópicos Intermédios:
|
Entrega EQ4 |
|
10 |
Tópicos Intermédios:
|
|
|
11 |
Tópicos Avançados:
|
Entrega EQ5 |
|
12 |
Tópicos Avançados:
|
|
|
13 |
Laboratório micro-projecto |
Entrega 1ª Fase micro-projecto |
|
14 |
Laboratório micro-projecto |
|
|
15 |
Apresentação dos micro-projectos |
|
http://teaching.jorgecardoso.eu/pm/
Usar o kit Lego Mindstorms NXT para criar um programa que coloque em funcionamento uma ventoinha real e outra virtual quando o utilizador soprar para o microfone. Neste caso o robô deverá ter a forma de um moinho de vento e deve ter incorporado o sensor de som.
1ª Fase:
Simular a intensidade do sopro com o rato (ponteiro perto do lado esquerdo baixa intensidade; do lado direiro, alta intensidade) e “rodar” uma ventoinha virtual (imagem) no ecrã de acordo com a intensidade.
2ª Fase:
Incorporar a ventoinha real (Legos).
Criar um programa que consista no movimento de várias “bolhas” no ecrã. As bolhas colidem com os limites do ecrã ou com outras bolhas e fazem richochete. As bolhas têm tamanhos e velocidades diferentes.
1ª Fase:
Implementar o movimento de várias bolhas (círculos) de tamanhos e velocidades diferentes e a colisão com os limites do ecrã.
2ª Fase:
Implementar a colisão entre bolhas. Modificar o aspecto das bolhas e usar gráficos vectoriais para poder reutilizar o mesmo gráfico escalado para vários tamanhos sem perder qualidade. Usar bolhas de cores diferentes. Usar a ferramenta Processing Screensavers e ver o resultado como screensaver do Windows.
Criar uma paisagem visual para representar uma paisagem sonora.
1ª Fase:
Pensar numa composição abstracta de formas, movimentos, cores para representar as possíveis variações de som no Bar da EA. Implementar essa composição de forma simulada, i.e., pressionando a tecla ‘A’ (por exemplo) simulámos um nível de som baixo, pressionando em ‘B’ simulámos um nível de som alto, pressionando em ‘C’ simulámos a existência de sons de baixa frequência, pressionando em ‘D’ simulamos a existência de sons de alta frequência, etc.
2ª Fase:
Usar uma biblioteca que permita obter o áudio de um microfone e analisá-lo. Ligar o resultado da análise à composição gerada.
Ideia semelhante ao projecto anterior.
Criar uma composição abstracta de formas, movimentos, cores, etc, para representar movimentação de dispositivos Bluetooth numa sala (entrada, saída, tipos de dispositivos, marcas, etc).
1ª Fase:
Pensar numa composição abstracta de formas, movimentos, cores para representar as possíveis variações de dispositivos Bluetooth no Bar da EA. Implementar essa composição de forma simulada, i.e., pressionando a tecla ‘A’ (por exemplo) simulámos a entrada de um dispositivo da marca X, pressionando em ‘B’ simulámos a entrada de um dispositivo da marca Y, pressionando em ‘1’ simulámos a saída do último dispositivo, etc
2ª Fase:
Utilizar a ferramenta DiABlu Scout (http://diablu.jorgecardoso.eu) e a biblioteca OSC do Processing e fazer a ligação entre a entrada e saída de dispositivos reais e a composição criada.
Ideia semelhante ao projecto anterior, mas a composição gerada não é uma composição abstracta.
Fazer um mapeamento directo entre dispositivos Bluetooth presentes no Bar da EA e a existência de ‘bichos’ no ecrã. Os ‘bichos’ devem mover-se pelo ecrã enquanto o dispositivo Bluetooth correspondente estiver presente. Os ‘bichos’ devem ter aspectos diferentes consoante as características do dispositivo Bluetooth (exemplo: telemóveis – bichos pequenos, PDA – bichos médios, Laptops – bichos grandes; nokia – bicho azul, siemens – bicho vermelho, etc).
1ª Fase:
Implementar apenas a presença de elementos básicos no ecrã para representar dispositivos (quadrados, círculos, etc). Simular a entrada e saída de dispositivos, i.e., pressionando a tecla ‘A’ (por exemplo) simulámos a entrada de um dispositivo da marca X, pressionando em ‘B’ simulámos a entrada de um dispositivo da marca Y, pressionando em ‘1’ simulámos a saída do último dispositivo, etc.
2ª Fase:
Utilizar a ferramenta DiABlu Scout (http://diablu.jorgecardoso.eu) e a biblioteca OSC do Processing e fazer a ligação entre a entrada e saída de dispositivos reais e a existência dos elementos no ecrã. Criar gráficos interessantes para representar os bichos.
Criar gráficos da presença de dispositivos Bluetooth no Bar da EA.
Mostrar: o número de vezes que um dispositivo entrou e saiu. Mostrar o número de dispositivos de cada marca. Os gráficos devem ser desenhado em tempo-real.
1ª Fase:
Implementar as variáveis necessárias para guardar os dados e os desenhos dos gráficos (de barras, tarte, etc).
2ª Fase:
Utilizar a ferramenta DiABlu Scout (http://diablu.jorgecardoso.eu) e a biblioteca OSC do Processing e fazer a ligação entre a entrada e saída de dispositivos reais e os gráficos.
Modificar as caras das pessoas obtidas através de uma webcam com elementos postiços: bigodes, óculos, cabelo, chapéus, barba, etc. Os elementos postiços adicionados devem ser diferentes. O programa deve funcionar para uma cara de cada vez.
1ª Fase:
Simular a posição da cara da pessoa no ecrã com o rato e com as teclas simular o afastamento da pessoa (caras mais pequenas ou maiores). Criar alguns elementos postiços básicos e adicioná-los na posição simulada da cara. Com outra tecla simula-se a saída da pessoa e a entrada de outra (mudar os elementos postiços).
2ª Fase:
Utilizar a biblioteca de detecção de faces do Processing e fazer a ligação com a fase anterior. Criar mais e melhores elementos postiços (gráficos vectoriais).
Dividir o ecrã numa grelha e mostrar, sequencialmente, cada frame obtida de uma webcam numa célula dessa grelha. O programa deve transitar entre grelhas de tamanhos diferentes.
1ª Fase:
Implementar o programa apenas com uma grelha e usar uma imagem estática em vez de um vídeo.
2ª Fase:
Utilizar uma biblioteca de captura de vídeo e utilizar as frames do vídeo em vez da imagem estática. Programar mais grelhas e programar a transição entre grelhas.
Mostrar um vídeo (obtido da webcam) num cubo. Cada frame do vídeo deve ser mostrada sequencialmente numa face diferente do cubo. O cubo deve estar em constante rotação.
1ª Fase:
Implementar o cubo em 3D e a sua rotação. O cubo deve ser criado face a face.
2ª Fase:
Aplicar como textura das faces do cubo as frames obtidas através de uma biblioteca de captura de vídeo.
Mostrar um vídeo (obtido da webcam) num objecto tri-dimensional a simular um livro. Cada frame do vídeo deve ser mostrada sequencialmente numa ‘página’ do livro. A frame anterior deve ser virada como uma folha para mostrar a nova frame.
1ª Fase:
Implementar o objecto tri-dimensional (três faces) e a animação da folha.
2ª Fase:
Aplicar como textura das faces as frames obtidas através de uma biblioteca de captura de vídeo.
Criar uma marioneta virtual: criar um esqueleto de um corpo humano usando a biblioteca de partículas traer.physics, usando “molas” para representar os ossos. Ligar alguns ‘fios’ aos pontos mais importantes e pré-programar movimentos. Cada parte do corpo deve ser representada com gráficos correspondentes (imagens de braços, pernas, etc).
1ª Fase:
Criar as imagens das várias partes do corpo e implementar a forma de as desenhar conhecendo apenas os ponto-chave, i.e., definir variáveis para as posições dos cotovelos, ombros, joelhos, etc. Definir algumas posições concretas para esses pontos. Implementar o desenho dos braços, pernas, etc, de forma independente da posição desses pontos.
2ª Fase:
Usar a biblioteca traer.physics para criar os pontos e ligações entre eles. Implementar um movimento contínuo.
Mostrar o resultado de buscas encadeadas no motor de busca Yahoo!, i.e., começar por procurar uma palavra qualquer e mostrar o primeiro resultado dessa busca, escolher uma palavra qualquer do resultado da busca anterior e recomeçar o processo. Mostrar no ecrã o texto das várias buscas sucessivas. Os textos devem ser posicionados em posições aleatórias no ecrã e devem ir desvanecendo.
1ª Fase:
Implementar apenas o posicionamento do texto e o desvanecer.
2ª Fase:
Usar a biblioteca de busca do Yahoo! para Processing e ligá-la à fase anterior.