Curso de programação de objetos para o Second Life - Parte 1
Publicado em: 10/09/2007
(
http://www.linhadecodigo.com.br/)
Nos últimos 12 meses, o simulador virtual Second Life vem se tornando
uma febre mundial, não só pela divulgação da mídia, mas pela série de
atrativos que reúne, sendo muito superior a soma das funcionalidades
encontradas em navegadores Web e mensageiros instantâneos. O Second
Life não é um jogo, pois não há um objetivo a ser atendido e sim um
simulador que pode ser usado para os mais diversos fins (de estudo,
passando por festas e planejamento de viagens até prática de sexo) e
funciona como um misto de ferramenta de teleconferência e rede de
relacionamentos.
O projeto que ganhou vida em 2004, ficou restrito aos Estados Unidos
até o início de 2006, quando então passou a aceitar usuários dos
demais países. Já existem hoje mais de 8,5 milhões de usuários
cadastrados, dentre os quais um grande número de brasileiros. Assim
como ocorreu com o Orkut, já ocupamos o terceiro lugar em número de
residentes, atrás apenas dos Estados Unidos e Alemanha.
É interessante notar que não foi só nas graças do usuário comum que o
SL caiu. As grandes empresas de várias áreas estão construindo ilhas
dentro do metaverso (como é conhecido o mundo virtual). Lá você não
encontrará apenas empresas da área de informática como IBM, Sun, Dell
e a própria Microsoft, mas fabricantes de refrigerantes como a Coca-
cola, de veículos como a Toyota, de produtos de telefonia como Nokia e
artigos esportivos como a Adidas, empresas da área de petróleo como a
Petrobras, empresas de transportes aéreos como TAM, emissoras de
televisão como a Rede Globo, entre tantas outras. A visibilidade da
marca dentro deste espaço é vista como de grande importância, pois se
trata de um público mais selecionado e exigente do que aquele que
encontramos em outros aplicativos de massa, até mesmo pelas exigências
de Hardware. Sabendo da importância de marcar presença, empresas como
a Microsoft já criaram uma ilha especialmente para promover o Visual
Studio e o Imagine Cup. Já a Rede Globo, fez o lançamento da novela
"Os Sete Pecados" em uma festa para mais de 900 convidados que tive o
prazer de participar.
Foto da entrada do Estúdio onde estava acontecendo uma promoção, algo
bastante comum no Second Life
Por trás de tudo o que você vê no SL está a mão dos próprios
residentes, responsáveis pela criação de mais de 95% do que existe
hoje no metaverso. Há um grande mercado que está se abrindo e que
exigirá mão de obra qualificada tanto para criar prédios, objetos,
peças de vestuário e até poses, tarefa adequada para o designers
gráficos, quanto para os desenvolvedores que implementarão
funcionalidades que vão desde uma porta se abrindo, passando por um
elevador, uma tela de cinema, um avião, uma lancha, etc. Afinal, após
moldarmos o barro precisamos dar o "sopro da vida" e este em termos
técnicos se traduz em scripts e mais scripts incluídos em nossos
objetos.
No presente curso que iniciaremos agora, iremos focar na programação
de scripts para objetos criados no Second Life. A criação de objetos
em si será vista em um curso a parte, de modo a atender os diferentes
públicos.
Se você ainda não experimentou como é ter uma segunda vida e deseja
conhecer o Second Life, visite:
http://www.mainlandbrasil.com.br/index.aspx
Faça o seu cadastro, baixe o client que está disponível para Windows,
Mac e Linux e divirta-se!
Página principa do Second Life Brasil
O que é preciso para programar?
A programação de objetos no SL é feita através da linguagem LSL,
acrônimo para Linden Script Language, uma linguagem derivada do C, que
será portanto familiar para todos que tem experiência prévia com
linguagens como C#, Java,C++ ou Javascript.
A maioria dos programadores utiliza o próprio client do Second Life
para desenvolver, ainda que seu editor seja bastante limitado. A falta
de recursos mais sofisticados como um intellisense será sentido
especialmente pelos profissionais acostumados com ferramentas como o
Visual Studio ou Eclipse. Como alternativa ao editor interno do
cliente SL, você poderá utilizar um editor como o Notepad++, que
apresenta sintaxe colorida para LSL. Neste curso, utilizaremos o
próprio editor do client.
Criando um objeto simples
Como muitos dos interessados em aprender a programar em LSL, jamais
criaram um objeto no SL vamos mostrar como criar um objeto bem
simples. Note que você só poderá criá-lo em um terreno de sua
propriedade, no caso de você ser um usuário Premium (que paga pelo
serviço) ou em áreas onde a criação de objetos é permitida pelo
proprietário do terreno. Para aqueles que não tem nenhum lugar de
preferência, sugiro o Natoma, cujas coordenadas para teleport são as
seguintes: Natoma (56,51,26).
Encontre uma área livre no terreno para iniciar os seus testes.
Execute os seguintes passos:
1. Tecle Ctrl + 4 para abrir a janela de criação e edição
diretamente na opção de criação de objetos.
2. Observe as figuras presentes nesta guia. Elas são conhecidas
como primitivas ou simplesmente prims. Através da edição das
propriedades destas formas e do seu uso combinado é que montamos
objetos e construções. Para atingirmos os objetivos desta primeira
parte do curso, bastará que você selecione a esfera e a seguir clique
em uma parte livre da tela.
Você irá perceber a presença de setas e linhas que usamos para
posicionar o objeto. Na guia Editar, há uma série de outras
ferramentas sobre as quais falaremos no curso de criação de objetos.
Por ora, basta saber que ao clicar na bola (estando em modo de edição
de objetos) você a selecionará e ao clicar em outra parte do terreno,
você a largará.
Incluindo scripts em um objeto
Agora que já temos um objeto, vejamos como incluir scripts para o
mesmo:
1. Tecle Ctrl + 3 para abrir a janela de criação e edição
diretamente na opção de edição de objetos. Caso já esteja com a janela
aberta, simplesmente clique no botão Edit.
1. Clique no botão Mais para exibir as guias de edição.
2. Clique na guia Conteúdo. É através dessa guia que
introduziremos todos os scripts que criarmos no Second Life.
3. Clique no botão Novo Script. Você verá que surgirá na tela uma
mensagem "Hello Avatar!" e na janela, dentro da pasta Contents uma
entrada nomeada como New Script.
4. Efetue um duplo clique sobre a mesma para editar o código do
script. A janela de edição de scripts será carregada. Veja:
É através desta janela que faremos a edição do script. Note que por
default já é criado um código inicial do tipo "Hello World" para
usarmos como ponto de partida. Por enquanto, não se preocupe em
entender a est rutura deste exemplo, pois trataremos desse
assunto mais adiante. Perceba apenas que usamos o método llSay para
fazer com que o objeto exiba uma mensagem sempre que for tocado e ao
ser iniciado. Os métodos e funções criados pela Linden Labs iniciam
sempre pelo prefixo "ll", o que facilita a identificação.
Após alterarmos o código, usaremos o botão Salvar para gravá-lo e
executá-lo automaticamente. Como nem sempre esta ação conjunta é
desejável, saiba que para apenas salvar, basta desmarcar a caixa de
verificação Running. Já para fechar a caixa de edição, clique no botão
X presente no alto da janela.
Nomeando os scripts criados
Fornecer um nome descritivo é uma tarefa importante especialmente para
a criação de objetos mais complexos que fazem uso de vários scripts.
Como vimos anteriormente, a ferramenta de criação de objetos do SL
cria os scripts com o nome padrão New Script seguido de um número caso
já exista um script com esse nome, o que por si só não ajuda muito.
Para alterar o nome do script execute estes passos:
1. Clique com o botão direito do mouse sobre o nome do script na
pasta Contents , presente na guia Conteúdo da janela de edição. No
menu de contexto que será exibido, clique em Renomear para alterar o
seu nome.
2. Forneça um novo nome para o mesmo e tecle Enter para efetivá-
lo.
Editando scripts pré-existentes em um objeto
Como poucas coisas na vida ficam prontas na primeira tentativa, com
freqüência precisaremos voltar a editar um script de um objeto, seja
para aperfeiçoá-lo, para corrigir falhas ou simplesmente para alterar
um texto. Isto pode ser feito a qualquer tempo, através dos seguintes
passos:
1. Clique sobre o objeto como botão direito do mouse. No menu de
contexto, selecione a opção Editar.
2. A janela de edição de objetos será exibida. Clique no botão
mais para exibir a parte de baixo da janela e a seguir na guia
Conteúdo.
3. Efetue um duplo clique sobre o nome do script presente na
pasta Contents ou clique com o botão direito do mouse sobre o script e
escolha a opção Abrir no menu de contexto.
Esses são os passos necessários para incluir um script em um objeto,
renomeá-lo e editá-lo a qualquer momento e que serão repetidos ao
longo das próximas lições, cada vez que formos adicionar um script a
um objeto que criarmos. Nos momentos oportunos apresentaremos mais
detalhes sobre a janela de edição de scripts.
Nota: você irá se divertir com as poses ridículas que o avatar faz às
vezes durante a criação de objetos, como a da imagem anterior.
Protegendo os direitos autorais
Um dos maiores atrativos do Second Life é o respeito da Linden Lab com
relação a propriedade intelectual. O que é feito pelo usuário pertence
apenas ao usuário, a menos que este queira compartilhá-lo ou vendê-lo.
Para nós desenvolvedores, isto significa que por vias normais outras
pessoas não poderão copiar as nossas criações e nem os nossos scripts.
Para demonstrar, vamos ilustrar o que ocorre quando tentamos editar um
objeto criado por outro usuário.
Na imagem a seguir, podemos ver uma jakuzzi que não nos pertence e nem
foi um objeto que tenhamos criado. Ao tentarmos editá-la, teclando
Ctrl + 3 e selecionando-a a seguir, o máximo que conseguimos é
visualizar a lista de scritps embutidas no objeto para criar efeitos
como a da fumaça que sai da mesma.
Tal qual um arquivo zipado protegido por senha, não conseguimos ter
acesso ao conteúdo de cada script. É possível, no entanto, conhecer o
histórico de alterações do objeto e saber quem foi o seu criador e
quem é o seu dono atual. Para tanto, basta clicar com o botão direito
do mouse sobre o mesmo e selecionar no menu de pizza que surge, duas
vezes a opção Mais.
Em seguida, clique na opção Inspecione. Você verá a janela a seguir,
onde as informações desejadas estão disponíveis. Lembramos que no caso
de objetos compostos como a jakuzzi que vimos, há várias partes
independentes que foram linkadas para formar a banheira. A imagem a
seguir, corresponde às informações do anel que aparece marcado em
amarelo nas capturas de tela vistas anteriormente.
Conclusão
Dar vida a objetos no Second Life via scripts é algo fascinante,
especialmente porque estamos lidando com um mundo em 3 dimensões, tal
qual em um game. Nesta lição você aprendeu o básico sobre a edição de
scripts e como fazer para que o seu objeto emita uma mensagem. Nas
próximas lições, veremos em detalhes a programação por eventos usada
pelo LSL, quando então poderemos fazer coisas mais úteis e
interessantes e os locais que você deve conhecer para se aperfeiçoar.
Aproveitamos a oportunidade para convidá-los a fazer parte dos grupos:
* Profissionais em Second Life
* Profissionais de informática
* Profissionais .NET
* Profissionais de Infra
* Estudantes .NET
que criamos para troca de informações da comunidade técnica
brasileira. Para aqueles que escrevem livros e artigos e atuam como
palestrantes Microsoft, fica aqui o convite para participar ainda dos
grupos:
* Autores .NET
* Palestrantes Microsoft
(...)
http://linhadecodigo.com.br/cs2/forum
(...)
Curso de programação de objetos para o Second Life - Parte 2
Publicado em: 18/09/2007
Na primeira parte deste curso, vimos como usar o editor de scripts que
acompanha o client do Second Life e alguns detalhes da janela de
criação e edição de objetos. Você aprendeu como inspecionar objetos e
desta forma descobriu que objetos mais complexos como uma jakkuzi ou
um carro são compostos por uma coleção de objetos simples conhecidos
como primitivas e que podemos ter vários scripts dentro destes
objetos, de forma isolada. Além disso, é possível aos vários scripts
presentes se comunicarem entre si e interagirem com o usuário,
representado no simulador pelo seu avatar.
Como recebemos muitos emails com dúvidas básicas do pessoal que está
começando a mexer agora com o SL, vamos detalhar nesta segunda parte
do curso alguns tópicos que foram apenas citados na primeira parte,
como por exemplo:
* Os recursos e limitações da LSL
* O que são eventos e estados
* Como encontrar o local adequado à criação de objetos
* Como retornar facilmente a um local através da criação de
landmarks
Antes de passarmos a explicação de como usar um editor profissional e
ao estudo de eventos. Desse modo um número maior de leitores poderá
nos acompanhar em nossas experiências pelo mundo virtual.
Para aqueles que estão hesitantes se vale ou não a pena investir tempo
nessa nova plataforma, fica aqui nosso apoio. Não tenha medo de
tentar, pois além do desafio técnico que encontramos com qualquer
linguagem de programação, você ainda irá se divertir muito, pois nesse
novo mundo você tem o poder de voar, atravessar paredes, se
teleportar, mover objetos sem tocá-lo e transmutar objetos. No final
das contas, a sensação é a mesma daquela que temos quando estamos
criando um jogo em 3D. Aqui você poderá construir literalmente o seu
mundinho particular e interagir com os seus amigos, no melhor estilo
Matrix e Minority Report.
Como o LSL funciona...
Você verá ao longo deste curso, que a Linden Scripting Language (LSL)
é uma linguagem simples, que pode ser encarada como poderosa em alguns
aspectos e limitadas sob outros pontos de vista. No entanto, é a única
alternativa que temos atualmente para adicionar comportamentos aos
objetos criados no Second Life.
Apesar de estarmos vivendo os tempos em que a POO vem ganhando cada
vez mais espaço no mercado, a LSL não é orientada à objetos e sim
baseada em eventos e estados. Isto significa dizer que não podemos
criar os nossos próprios objetos. Estamos restritos a tipos que
encontramos em outras linguagens como integer e string, além de outros
exclusivos, como variáveis 3D do tipo vector e quaternioon
(veremos a utilidade das mesmas futuramente). Está presente na
linguagem ainda uma extensa lista de funções (mais de 300) que inclui
funções para manipulação de Física (physics) e interação entre
avatares. Note que apesar da grande quantidade de funções pré-
existentes, temos a possibilidade de criarmos as nossas próprias
funções.
Entendo o que são Estados e Eventos
Na primeira parte deste curso, vimos como utilizar o editor de scripts
que acompanha o cliente do Second Life sem, no entanto, focarmos no
script que é gerado por padrão pelo mesmo. A partir de agora, iremos
começar a estudar em detalhes a estrutura dos scripts escritos em LSL.
Os scripts que criaremos em LSL possuem estados específicos e realizam
suas funções movendo-se pela série de estados de maneira controlada
pelos eventos. Será algo novo para a maioria dos desenvolvedores, pois
ainda que tenhamos a possibilidade de implementar máquinas de estado
na maioria das linguagens, em LSL trabalhamos seguindo este conceito o
tempo todo.
O Second Life fornece muitos tipos diferentes de eventos, desde
aqueles que ocorrem baseados em um temporizador e não requerem
interação com o usuário até os que são explicitamente disparados pelo
mesmo. O exemplo mais típico é o evento touch que ocorre quando o
usuário toca em um objeto.
Para entendermos como tudo funciona, vamos analisar o template que é
gerado como ponto de partida. Crie um novo objeto e adicione um script
para o mesmo conforme aprendemos na aula anterior. O editor de scripts
será exibido com o código a seguir:
default
{
state_entry()
{
llSay(0, "Hello, Avatar!");
}
touch_start(integer total_number)
{
llSay(0, "Touched.");
}
}
A palavra-chave default representa o estado inicial pelo qual o
programa inicia. No pequeno exemplo acima temos dois eventos,
state_entry que ocorre quando o objeto é iniciado e touch_start, que
acontece quando este é tocado por um usuário.
Voltaremos a este tema na próxima parte do curso quando começaremos a
criar nossos próprios scripts, o que facilitará o seu entendimento
sobre o assunto.
Onde posso criar meus objetos?
Conforme mencionamos na parte anterior do curso, você só poderá criar
objetos em um terreno de sua propriedade ou em um local onde o
proprietário tenha concedido este direito aos visitantes. Este tipo de
local é conhecido como Sandbox (caixa de construção) e pode ser
encontrado com facilidade no Second Life, pois a sua presença em uma
ilha ajuda a aumentar o número de visitantes.
Para encontrar locais onde é possível construir, siga este roteiro:
1. Clique no botão Procurar na parte inferior da janela.
2. A caixa de diálogos Procurar será exibida. Selecione a guia
Lugares.
3. Digite no campo Encontrar a palavra SandBox.
4. Clique no botão Buscar.
5. Uma lista de locais adequados a criação de objetos e scripts
será exibida.
Veja na base da janela que foram encontrados mais de 100 resultados. O
cliente do SL só mostra os 100 primeiros. Para achar outros locais não
relacionados na lista retornada, é preciso refinar mais a busca
adicionando outras palavras.
6. Selecione o local da sua preferência e clique me Teleportar para
explorá-lo.
Para saber se é possível construir em determinado local, basta olhar
para o topo da janela. Nos locais em que não é possível criar objetos
ou script, você verá os ícones a seguir:
Nos locais em que é possível criar objetos e scripts, esses dois
ícones não estarão presentes. Confira na captura de tela a seguir
referente ao local selecionado na janela Procurar:
Neste local há apenas um ícone sinalizando que não é permitido
empurrar objetos criados por outros usuários.
Voltando facilmente ao local
Assim que achar um local adequado, não deixe de criar uma landmark
para ele. Trata-se de um atalho com as coordenadas para o local dentro
do Second Life que é armazenado sob o grupo Landmarks do seu
inventário, permitindo assim o seu retorno posterior ao mesmo
facilmente.
Para criar a landmark, faça o seguinte:
1. Pare o seu avatar no exato local onde deseja criar a landmark.
2. No menu Mundo, clique na opção Criar Landmark aqui.
Curso de programação de objetos para o Second Life - Parte 3
Publicado em: 16/10/2007
Agora que você já foi apresentado à estrutura da linguagem e aos
principais editores disponíveis para programar em LSL, chegou a hora
de começar a criar os seus próprios scripts. Há muito que aprender e
quanto mais você pesquisar na Internet, mais rápido alcançará um nível
que lhe permitirá caminhar sozinho.
A partir desta entrega, você irá reparar que passamos a ter um enfoque
mais prático, demonstrando como criar scripts para resolver problemas
que ocorrem com bastante freqüência dentro do SL. Deste modo, você não
irá perder tempo tendo que "reinventar a roda"...
Para estrear esta nova fase, veremos como efetuar um upload de uma
imagem que será usada como textura para um objeto e a seguir como
programar este mesmo objeto para fornecer ajuda aos visitantes através
de um notecard.
Efetuando upload de imagens
Iremos executar upload de imagens sempre que precisarmos de uma
textura que ainda não exista em nosso inventário. Este tipo de ação é
pago, mas custa apenas L$10,00, algo em torno de 1 centavo de Real,
valor que pode ser conseguido facilmente mesmo por usuários que não
são Premium em atividades de camping.
O trabalho principal ocorrerá obviamente fora do simulador do Second
Life, em um editor gráfico, onde devemos cortar a parte da imagem que
nos interessa, tratá-la, redimensioná-la e após obtermos o resultado
esperado, efetuar o upload para os servidores da Linden Labs. Por
questões de espaço e para não perdermos o foco do curso, não iremos
abordar aqui os passos envolvidos no tratamento da imagem. Assumiremos
que você já tem uma imagem pronta para ser usada no metaverso.
Para efetuar o upload de imagens, siga este roteiro:
1. Selecione uma imagem. Para o exemplo que construiremos na
próxima seção onde teremos um quadro que ao ser clicado, fornecerá
informações sobre o autor, usaremos uma foto pessoal recente (no caso
do autor, este usará uma tirada na festa de 15 anos da Renata).
2. Abra o Cliente do Second Life. Teleporte-se para um local onde
você possa construir objetos.
3. No menu Arquivo, selecione Upload de imagem.
4. A caixa de diálogo Abrir será exibida. Selecione a imagem
desejada e clique a seguir no botão Ok.
5. A caixa de diálogo de upload de imagem será exibida. Além de
permitir inserir um nome e uma descrição para a imagem e de fornecer
zoom (veja que o cursor mudou de forma) para verificarmos os detalhes,
ela oferece um recurso de preview, que nos permite visualizar como a
imagem que estamos enviando para o SL pode ser usada de diversas
formas como textura.
Nota: para testar o zoom, clique com o botão esquerdo do mouse sobre a
imagem e mantenha-o pressionado enquanto move o mouse para frente
(zoom in) ou para trás (zoom out).
6. Clique no botão Upload para pagar e enviar a imagem para os
servidores do SL.
7. Aguarde enquanto a imagem é enviada. Ao final, você irá receber
uma confirmação.
Note que há uma informação importante nessa janela que você pode
querer utilizar mais adiante: as dimensões da imagem (no exemplo 128 x
256).
8. Feche a janela que contém a imagem, pois ela já faz parte do seu
inventário e não será necessária para os próximos passos.
Criando o quadro
Para ajudar o pessoal que está começando agora, vamos mostrar
rapidamente como criar um quadro:
1. Tecle Ctrl + 4 para abrir a janela de criação.
2. Selecione o cubo na lista de primitivas.
3. Clique em um local livre da tela para que o mesmo seja criado.
Curso de programação de objetos para o Second Life - Parte 4
Publicado em: 28/11/2007
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 <0,0,0.5> 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!
Criando sites em
ASP.NET para o Second Life
Publicado em: 22/10/2007
Desde a versão 1.13.0, o cliente do Second Life passou a suportar um
interessante recurso para quem desenvolve sites: a capacidade de
visualizar o conteúdo de páginas web a partir de uma janela específica
existente no próprio visualizador. Trata-se da janela Profile, que
agora dispõe de uma nova guia chamada Web para a qual o usuário pode
configurar uma página a ser exibida quando outros usuários
visualizarem o seu perfil.
Perceba que ainda não se trata de um suporte total a páginas web, mas
já é um bom começo. Através dessa URL pré-definida, podemos
disponibilizar informações como, por exemplo, dos posts dos nossos
blogs, de artigos ou de vendas de produtos diretamente no seu perfil.
A janela de visualização apresenta as dimensões de 400 x 400 pixels no
cliente do Windows e não pode ser redimensionada (pedimos que o
pessoal do Linux e do Mac postem comentários informando se esta
informação também é válida para os demais sistemas). Isto significa
que para evitarmos a indesejável scroll bar horizontal, devemos criar
páginas adequadas a largura de 400 pixels que deverão ser exibidas
sempre que o user agent (leia-se navegador) em questão for o cliente
do Second Life. Para tanto, basta inspecionar a string de
identificação do user agent em uso. Compare os resultados obtidos para
o Internet Explorer e para o cliente do Second Life:
IE 7
LifeMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR
2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04324.17; .NET CLR
3.0.04506.590; .NET CLR 3.5.20706)
Cliente do Second Life
Mozilla/5.0 (Windows; U; Windows NT 5.1; chrome://navigator/locale/navigator.properties;
rv:1.8.0.12) Gecko/20070605 [Second Life (Second Life Release) -
1.18.2.1]
Vale ressaltar que a string de identificação do cliente do SL irá
mudar de acordo com o sistema operacional, mas sempre encontraremos a
palavra Second Life presente.
Criando uma aplicação de teste
Para ilustrar como identificar se o cliente que está requisitando a
página é o visualizador do Second Life ou um outro navegador, vamos
criar uma pequena aplicação de testes chamada WebSiteSL. Perceba na
imagem a seguir que usamos o Visual Studio 2008 para criar o projeto,
mas nada impede que você utilize a versão 2005 para este teste.
Após o Visual Studio criar o conjunto de arquivos inicial, tecle F7
para entrar com o código do evento Page_Load da página Default.aspx.
Inclua o trecho de código a seguir:
protected void Page_Load(object sender, EventArgs e)
{
if (Request.UserAgent.Contains("Second Life"))
{
Response.Write("Página carregada no cliente do Second Life");
}
else
{
Response.Write("Página carregada fora do cliente do Second
Life");
}
}
Tecle F5 para que o Visual Studio execute a página e carregue em
segundo plano o servidor web que acompanha a ferramenta. Veja a página
de teste carregada no IE:
Nota: caso deseje obter a string de identificação inteira do user
agent, utilize a linha de código a seguir:
Response.Write(Request.UserAgent);
Nota 2: este mesmo teste pode ser feito em javascript usando o código
a seguir:
if(navigator.userAgent.indexOf("Second Life")!=-1)
{
// Navegador é o cliente do second life
}
Como você já deve saber, o servidor interno que acompanha o VS 2005 e
o VS 2008 por padrão sorteia portas aleatórias para escutar. No caso
do teste que fizemos, a porta em uso foi a 1906:
http://localhost:1906/Default.aspx
Copie a URL da barra de endereço do navegador para facilitar o seu
trabalho. Em seguida, abra o cliente do Second Life e clique com o
botão direito do mouse sobre o seu avatar e selecione no menu de
contexto a opção Perfil.
A caixa de diálogos Perfil será exibida. Clique na guia Web e entre
com a URL copiada do bowser web no campo de endereço. A seguir tecle
Enter para carregar a página. Confira na figura a seguir:
Viu como é simples criar páginas com conteúdo específico para o Second
Life? Esperamos que este pequeno artigo ajude aos empreendedores em
atividade no Second Life a bolarem novas formas de ganhar dinheiro
explorando esta nova opção. E tudo indica que em breve teremos suporte
total a Web por dentro do Second Life...Vá se preparando!