VGA – Tutorial 11 – Denthor

                       --==[ PARTE 11 ]==--

Para obter os programas mencionados neste tutorial, por favor baixe o zip com a versão antiga do tutorial, neste link.

Introdução

Olá, de novo, pessoal!

A razão pela qual esta edição está atrasada (todo treinamento tem sido assim até agora ;)) é principalmente devido a um aniversário (meu 19º), e numerosos testes na universdade (ugh!). Mas de qualquer modo, aqui está ele. O programa de amostra dessa vez é sobre cross-fading. A razão para isso é que muitas pessoas têm comentado que eu deveria estar mudando para alguns poucos efeitos de demos básicos, agora que temos a maioria do básico de programação VGA. Eu também estava pensando em: ou falar sobre som numa versão futura desse treinamento, ou começar uma série “Tutorial de Som ASPHYXIA”. Comentários?

Uma grande diferença entre esse treinamento e o anterior é que eu estou incluindo arquivos binários (figuras, no caso). Isso significa que ele não estará mais acessível no banco de mensagens, e ele deve ser obtido no banco de arquivos. Note porém que será dado aviso da existência do mesmo no banco de mensagens.

Asphyxia formalizou as coisas um pouco, e agora temos uns poucos sites oficiais de distribuição para todos nossos demos e treinamentos. Se você gostaria que sua BBS se transformasse num site de distribuição, por favor mande-me um email para smith9@batis.bis.und.ac.za e vou te enviar a informação necessária.

Se você gostaria de me contactar, ou ao time, há muitos modos que você pode fazê-lo: 1) Escrever uma mensagem para Grant Smith/Denthor/Asphyxia em email privado na ASPHYXIA BBS.
2) Escrever para Denthor, Eze, Goth ou Fubar na Connectix.
3) Escrever para:
Grant Smith
P.O.Box 270 Kloof
3640
Natal
África do Sul
4) Ligar para mim (Grant Smith) no número (031) 73 2129
(deixe uma mensagem se você ligar quando eu estiver na faculdade)
Ligue para +27-31-73-2129 se você está ligando de fora da África do Sul (A conta é sua ;-))
5) Escreva para smith9@batis.bis.und.ac.za

OBS1 : Se você é um representante de uma companhia ou BBS e quer que a ASPHYXIA faça um demo para você, mande um email pra mim; podemos discutir.
OBS2 : Se você fez/tentou fazer um demo, MANDE PARA MIM! Estamos nos sentindo muito solitários e queremos encontrar/ajudar/trocar código com outros grupos de demos. O que você tem a perder? Mande uma mensagem aqui e podemos ver como transferir. Nós realmente queremos ouvir de você.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

O que é um “Crossfade”?

Essa é uma pergunta fácil. Quando você estiver assistindo a um programa de TV, você vai ver muitas vezes uma cena na tela, que muda lentamente para outra cena, com a nova cena se tornando cada vez mais e mais forte, e a antiga ficando mais apagada. Isso é um crossfade. Fácil, hein?

Talvez, mas não é tão fácil de programar num computador…

Na maioria dos demos há um crossfade de duas cores, preto e branco, por exemplo: As palavras ‘MYDEMOTEAM’ aparecem em letras grandes, então acontece um crossfade para ‘PRESENTS’ em letras brancas grandes.

Eu decidi permitir ao programador ter um pouco de cor no seu crossfade, e o programa de amostra pode manipular um crossfade de muitas cores.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Como um crossfade funciona?

Aqui vem a parte esperta.

Para fazer um crossfade, nós carregamos duas figuras, DE e PARA. Então, para cada pixel que eles são diferentes, colocamos um pixel numa terceira tela.

Por exemplo, onde quer que haja um pixel de cor 9 na tela 1 e um pixel de cor 45 na tela 2, colocar um pixel de cor 1 na terceira tela. Você então repete isso para todas as combinações de pixels na tela um e dois, e põe o resultado na tela 3. Aqui vai isso em ascii…

  Tela 1      Tela 2        Tela 3
   .1...        .3...        .1...
   .....        ..2..        ..2..
   ...8.    +   ...1.    =   ...3.
   .1...        ....2        .4..2

Notou como os valores da tela 3 são sequenciais? Nós mantemos um contador para isso… Os dois “2”‘s na tela 3 são idênticos, então não usamos uma nova cor para isso…

Também mantemos as pallettes… source e dest.

Para o exemplo acima, source[1] seria a pallette de 1 na tela 1, e dest[1] seria a pallette de 3 na tela 2 (Note que a tela 1 e a tela 2 têm pallettes diferentes)

Quando estivermos terminado com a figura, fazemos um flip na tela 3 para a VGA e fazemos o seguinte: movemos a pallette de source para dest ou vice-versa. É isso. Sem manipulações caras para o crossfade, apenas mudamos a pallette. Legal, né? Isso também significa que você pode estar fazendo coisas divertidas no primeiro plano com as cores não usadas da pallette sem seu programa executar a dois frames por segundo 😉

O programa de amostra está completamente documentado, você não deveria ter problemas em decifrá-lo… Se alguma vez você usar esse efeito em um demo ou jogo, cumprimente-me! 🙂

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Problemas com crossfades

O principal problema com crossfades é esse: pode haver somente 256 cores na tela 3, em outras palavras, somente 256 combinações de cores. No programa de amostra, se você carregar duas figuras com mais de 256 combinações, o programa dá uma mensagem de erro e sai pro DOS. Para resolver esse problema, você pode fazer duas coisas: reduzir o número de lugares onde as duas figuras se intersectam, ou diminuir a pallette, usando o comando “SQUEEZE” do Autodesk Animator. Isso reduz o número de cores usadas pela figura, e assim diminui o número de combinações. A figura, no entanto, perde um pouco de qualidade.

O segundo problema com crossfading é este: ele emporcalha a maioria das cores. Seja lá o que você fizer no primeiro plano, certifique-se de que faça com quanto menos cores puder.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Fechando

Então, o que você acha? Eu deveria continuar com efeitos de demos, ou deveria achar mais coisas básicas para fazer? Talvez eu devesse parar e fazer só um pouco de programação de som de agora em diante? É com você, então me mande um email.

Você vai notar que o programa de código pode carregar qualquer arquivo .CEL, você não precisa se restringir aos que eu te dei. Tente fazer crossfading um pouco com suas figuras e veja como sai. A figura do robô foi desenhada pelo Fubar para nosso demo Psycho Neurosis, e eu então diminuí a pallette de modo que o crossfade funcionasse. A palavra “ASPHYXIA” foi desenhada por mim, também no Autodesk Animator.

Bem, fiz o melhor pra publicar isso rapidamente, hoje é a última vez pelos próximos dias que posso entrar na Rede. Eu também vou votar amanhã. Se eu vir uma câmera da CNN, vou acenar (eu sou aquele lá, o da esquerda, com a camisa vermelha! ;-)) O próximo treinamento virá da Nova África do Sul (TM)

Vejo vocês na próxima!

  • Denthor
    • 9:16, 26 de Abril, 1994
  • Krull

A Nova Krull's HomePage