Desenvolvimento - LSL (Second Life)

Curso de programação de objetos para o Second Life – Parte 4

Nesta parte do curso veremos como criar uma propaganda animada com um link para uma página Web. Usando esta técnica, você poderá tanto divulgar o site da sua empresa ou página pessoal quanto oferecer serviços e produtos reais e virtuais sem a necessidade de cobrar em linden dólares.

por Cláudio Ralha



Nesta quarta parte do Curso de programação de objetos veremos como criar uma propaganda animada para o Second Life e como carregar um web site ao clicarmos nela. Conforme prometemos anteriormente, nosso foco será em aplicações práticas para os scripts criados e também no uso das melhores práticas na programação em LSL.

Tenha em mente que a forma como um script roda tem impacto direto no servidor que hospeda o território onde o nosso avatar se encontra. Isto significa que podemos ter os indesejáveis efeitos de lags (atrasos e travamentos) mesmo em locais com um número razoável de avatares em decorrência do uso indiscriminado de scripts mal projetados. Especialmente aqueles que envolvem o uso de temporizadores precisam ser pensados com bastante cuidado para não impactar demais no ambiente, uma vez que eles são executados de maneira contínua. Se você já se perguntou por quê muitos locais impedem os visitantes de executarem scripts, acaba de descobrir um dos motivos principais.

Para demonstrar que normalmente há sempre mais de uma forma de se realizar algo, vamos criar um exemplo de uma esfera giratória que exibirá o logo do Linha de Código e que utiliza uma função para promover a rotação do objeto com o mínimo de impacto para o ambiente, já que todo o cálculo é feito diretamente na aplicação do cliente e não no servidor. Parece bom demais para ser verdade? Pois saiba que há ainda um diferencial importante: ao invés de criarmos um longo e complexo script que inclui código em um timer, criaremos o efeito com uma única linha de código. Continue lendo e descubra como...

Rotacionando objetos

Na parte 3 deste curso, vimos como aplicar textura a um objeto quando criamos o quadro que fornece um notecard. Para o exemplo desta aula, criaremos uma esfera que exibirá a logomarca do site e irá rotacionar no estilo da Universal e do Planeta Diário. Iniciaremos criando a esfera:

1. Utilize a ferramenta de criação de objetos acessível através do atalho Ctrl + 4 para criar uma esfera e redimensioná-la.

2. Crie a imagem em um editor gráfico e depois salve-a em um dos formatos compatíveis (.tga, .jpg, .bmp e .png).

3. Execute os procedimentos de importação de imagem e aplicação de textura apresentados na parte 3 deste curso para aplicar a logomarca do site na esfera.

A seguir, podemos conferir o resultado da textura aplicada ao globo.

4. Agora que já temos o objeto, inclua o script abaixo que será responsável pelo efeito de rotação do objeto:

default 
{ 
    state_entry() 
    { 
        llTargetOmega(<0,0,0.5>,1,1); 
        llSetPrimitiveParams([PRIM_POINT_LIGHT, TRUE, <0,0,1>, 1, 10.0, 0.75]); 
    } 

}

Para criar o efeito de rotação utilizamos a função llTargetOmega. Saiba que apesar de existirem outras formas de se chegar ao mesmo resultado, optamos por usar esta pelos seguintes motivos:

  1. Exige uma única linha de código.
  2. Não gera lag já que o movimento de rotação é produzido diretamente no viewer do usuário, sem a preocupação de que todos os residentes que estejam na área vejam o globo girando em um movimento sincronizado.
  3. Não requer o uso de um timer e de variáveis responsáveis pelo incremento do movimento.

O comando llTargetOmega requer a passagem dos seguintes parâmetros:

  • axis _ um vetor descrevendo o eixo sobre o qual o objeto girará ao redor. O valor fará com que o objeto gire sobre o eixo Z.
  • spinrate _ índice em que o objeto girará ao redor do eixo dado em radianos por segundo.
  • gain _ é a força da volta, que só tem um efeito em objetos físicos. No entanto, ainda assim deve ser diferente de zero para objetos não físicos.

Uma explicação detalhada de como gerar movimentos de rotação usando esta e outras funções foge ao escopo deste curso, mas se você quiser aprofundar o seu estudo sobre o tema visite:

http://www.lslwiki.net/lslwiki/wakka.php?wakka=llTargetOmega
http://www.lslwiki.net/lslwiki/wakka.php?wakka=LibraryRotationFunctions

Observe na próxima imagem, onde temos o globo executando o script anterior, que além de promover a rotação, o código fornecido ainda adiciona uma luminosidade azulada a esfera.

Isto é feito por meio da função llSetPrimitiveParams, cuja explicação de uso você encontra em:
http://www.lslwiki.net/lslwiki/wakka.php?wakka=llSetPrimitiveParams

Veja que até aqui temos apenas um globo texturizado que rotaciona, mas que não permite nenhum tipo de interação com o usuário. Melhoraremos este quesito na próxima seção, onde veremos como linkar este objeto com um site da Web.

Carregando uma página Web

A capacidade de linkar um objeto do Second Life a uma página da Web é algo altamente desejável, pois torna possível criar um atalho para o site oficial da sua empresa, da sua página pessoal ou mesmo para páginas de vendas de produtos reais ou virtuais.

Assim como em outros tipos de plataformas de desenvolvimento, no SL esta também é uma tarefa bem fácil de ser executada. Para tanto, utilizamos a função llLoadURL como demonstrada no exemplo a seguir:

touch_start(integer total_number)
{
   llLoadURL(llDetectedKey(0), 
   "Blog do Claudio Ralha", "http://linhadecodigo.com.br/cs2/blogs/ClaudioRalha/default.aspx");
}

Note que para funcionar como esperado, é preciso que você inclua o código do evento touch_start dentro do estado default do script apresentado anteriormente. Após executar a alteração, salvar e compilar o script, bastará tocar no objeto para receber uma mensagem solicitando autorização para carregar a página Web. Veja na imagem a seguir...

A função llLoadURL poderá ser usada para carregar tanto URIs que comecem com os protocolos http: e https:. Infelizmente, não é possível usá-la com outros protocolos importantes como mailto: e ftp:, o que na prática não chega a ser um problema real pois há formas de burlar essas limitações. Para saber mais sobre esta função, consulte:

http://www.lslwiki.net/lslwiki/wakka.php?wakka=llLoadURL

Conclusão

Vimos nesta parte do curso um primeiro exemplo de como criar uma propaganda animada, algo importante em um ambiente 3D para despertar a atenção dos visitantes que estão passando pelo local, e como levá-los para fora do Second Life para um endereço específico da Web. Ao estabelecermos este link externo ao SL, podemos oferecer vários serviços que não estão disponíveis dentro do metaverso e mesmo executar negócios sem a necessidade de cobrar em linden dólares.

Também mencionamos a importância de desenvolver com cuidado scripts para os seus objetos pois o desenvolvimento de forma incorreta acaba pesando no ambiente como um todo e gerando lags (atrasos e travamentos) que tendem a afugentar os visitantes das suas terras.

Na próxima parte deste curso, voltaremos a abordar a criação de propagandas como um meio para divulgar algo ainda mais interessante: como criar um tele-transporte via código!

Abraços e até a próxima!

Cláudio Ralha

Cláudio Ralha - http://linhadecodigo.com.br/cs2/blogs/ClaudioRalha/default.aspx
Autor dos livros Dominando o Second Life e Segredos do Visual Studio.NET, profissional certificado Microsoft (MCP,MCAD,MCTS e MCPD) e palestrante Microsoft Brasil e Culminis. Já atuou como colunista do Informática etc do Jornal O GLOBO, editor da Revista Infomania e colaborador de várias revistas e sites. No mercado corporativo já desenvolveu para grandes clientes como Petrobras, Shell, Esso, Rede Globo, Furnas, Brascan, ONS, Unibanco e Bolsa de Valores pelas consultorias Accenture, Stefanini, Arcon, ATT/PS, Informaker, Relacional, Value Team e Softtek.