LSL - Linden Scripting Language Trabalhando com Scripts Parte 3

Slides:



Advertisements
Apresentações semelhantes
SLIDE 1 – Transformações - Translação
Advertisements

Movimento em I dimensão
Material pedagógico Multiplicar x 5 Clica!
2º Semestre 2009 > PUCPR > Design Digital
Introdução à Programação usando Processing Programação Gráfica 2D Animações Exercício Animações 14/10/09 Bruno C. de Paula 2º Semestre 2009 > PUCPR >
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Exercício do Tangram Tangram é um quebra-cabeças chinês no qual, usando 7 peças deve-se construir formas geométricas.
Pesquisa Bibliográfica Disciplina de Metodologia da Pesquisa Profª Tereza Yoshiko Kakehashi 1.
Prof. Hebert Monteiro Movimento em I dimensão. Iniciaremos o nosso curso estudando a mecânica como ciência que estuda o movimento. A mecânica é dividida.
MECÂNICA Mecânica Clássica Cinemática – Movimento em uma dimensão
Copyright (c) 2003 by Valery Sklyarov and Iouliia Skliarova: DETUA, IEETA, Aveiro University, Portugal.
1 INQUÉRITOS PEDAGÓGICOS 2º Semestre 2003/2004 ANÁLISE GERAL DOS RESULTADOS OBTIDOS 1.Nº de RESPOSTAS ao inquérito 2003/2004 = (42,8%) 2.Comparação.
Sumário Bem ou serviço compósito = dinheiro Exercícios 2 Exercícios 3.
Sumário, aula 9 Elasticidade Elasticidade arco Elasticidade no ponto
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 11.
Vetores Representação e características Operações I Decomposição
Universidade Bandeirante de São Paulo Fundamentos da Álgebra
Excel Profa. Cristina M. Nunes.
ES723 - Dispositivos Eletromecânicos
LSL - Linden Scripting Language Trabalhando com Scripts Parte 1
Estatística Básica Utilizando o Excel
FUNÇÃO MODULAR.
ATIVIDADES DE REVISÃO TURMA 101 GEOGRAFIA- EVA CRISTINA
Questionário de Avaliação Institucional
Listas Encadeadas.
Classes e objetos P. O. O. Prof. Grace.
Técnicas de Contagem.
Técnica de Contagem.
Apontadores ou Ponteiros
Provas de Concursos Anteriores
MECÂNICA - ESTÁTICA Vetores Forças Cap. 2.
Campus de Caraguatatuba
Módulo Financeiro Centro de Custo.
Como aplicar leis da lógica
Impressão de etiquetas
MECÂNICA - DINÂMICA Cinemática de uma Partícula Cap. 12.
MECÂNICA - DINÂMICA Exercícios Cap. 13, 14 e 17. TC027 - Mecânica Geral III - Dinâmica © 2013 Curotto, C.L. - UFPR 2 Problema
Cinemática de uma Partícula Cap. 12
Dinâmica do Movimento Plano de um Corpo Rígido: Força e Aceleração
Resultantes de Sistemas de Forças Cap. 4
MECÂNICA - DINÂMICA Cinemática Plana de um Corpo Rígido Cap. 16.
Cinemática Plana de um Corpo Rígido Cap. 16
Cinemática Plana de um Corpo Rígido Cap. 16
Resultantes de Sistemas de Forças Cap. 4
MECÂNICA - ESTÁTICA Vetores Forças Cap. 2.
MECÂNICA - DINÂMICA Cinemática de uma Partícula Cap Exercícios.
Árvores binárias de pesquisa com balanceamento
PROGRAMAÇÃO ESTRUTURADA II
1 António Arnaut Duarte. 2 Sumário: primeiros passos;primeiros passos formatar fundo;formatar fundo configurar apresentação;configurar apresentação animação.
Coordenação Geral de Ensino da Faculdade
Modelagem Estatística
É u m e l e m e n t o f u n d a m e n t a l
EXERCÍCIOS PARA GUARDA-REDES
EMPREENDEDORES EM AÇÃO PROF. NILSON R. FARIA Colégio Wilson Joffre.
VI Fórum Banco Central sobre Inclusão Financeira
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Computação Gráfica Aula 3 Transformações Geométricas
SairPróximo Itens de Seleção Probabilidades e Combinatória Cálculo de Probabilidades. Regra de Laplace. ITENS DE SELEÇÃO DOS EXAMES NACIONAIS E TESTES.
MATRICIAL CONSULTORIA LTDA. PREFEITURA MUNICIPAL DE GARIBALDI 23/10/ : ATENÇÃO Os locais descritos nas planilhas anexas não correspondem ao total.
TRANSFORMAÇÕES DE TENSÕES
Trigonometria 19/11/2009.
Curso: Cerimonial, Protocolo e Eventos
Campus de Caraguatatuba Aula 2: Somatório e Produtório
EBSCOhost Pesquisa avançada.
FORMATANDO O TRABALHO NO WORD 2007
Cinemática Plana de um Corpo Rígido Cap. 16
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Dinâmica do Movimento Plano de um Corpo Rígido: Força e Aceleração
Módulo Compras Relatórios e Relações 1. Objetivo 2 Conhecer os relatórios e as relações do sistema disponibilizadas no módulo Compras.
Contagem Sequencial do Estoque
Transcrição da apresentação:

LSL - Linden Scripting Language Trabalhando com Scripts Parte 3 Monitora: Cintia Caetano Mestrado UFF – IC 2009/01 1

Movimentação e Rotação Na vida real, nos preocupamos apenas em ir para frente, para trás, para algum lado, vários aspectos relacionados a movimentação são totalmente desnecessários para que possamos viver sem problemas. Já no SL, certos fundamentos de física são necessários. Vamos verificar alguns conceitos necessários, e depois vamos ver e estudar algumas funções relacionadas. 2

Movimentação e Rotação No SL, temos também os pontos cardeais, que podem ser verificados observando o mini-mapa. Como na vida real, também pode andar para frente, de costas, e para os lados. Isso não se aplica somente a você, os diversos objetos, incluindo veículos, balas, etc., também fazem uso destes dois sistemas de referência. 3

Global X Local No SL, definimos nossos movimentos e rotações para serem executados local ou globalmente. Global - é toda movimentação ou rotação relativa a norte, sul, leste e oeste (ao mundo). Uma movimentação global não leva em conta se você, assim como seu objeto, esta de lado, de frente ou de costas. 5

Global X Local Local – é toda movimentação ou rotação relativa unicamente a você, ou ao objeto. Não importa se é norte ou sul, se esta de frente para onde deseja chegar, está indo para frente, se o seu destino esta atrás de você, está andando de costas, e se deseja chegar a um local que esta em um dos seus lados, esta andando de lado. 6

Representação Matemática Utiliza-se o plano cartesiano para representar tanto a movimentação global quanto a local. O plano cartesiano é composto de três retas, a qual chamamos a cada uma de: eixo x, eixo y e eixo z. O eixo x representa, no SL, a movimentação relativa à Leste-Oeste. O eixo y a movimentação relativa à Norte-Sul. O eixo z é relativo à altitude. 7

Representação Matemática No SL, a unidade de medida é metros, alcançando um precisão de até 1 milímetro. Com isto temos que nossos eixos poderão variar de 0,001 metros (um milímetro) até o limite da região onde estamos. Nota: Cada território é um quadrado 255x255. Ao trabalhar com movimentação, usaremos um valor do tipo vector. <float, float, float> 8

Representação Matemática Crie um novo objeto, e verifique os eixos de movimentação sobre ele. Observe no mini-mapa os pontos cardeais que eles apontam. Observe que o eixo x (cor vermelha), o eixo y (cor verde) e o eixo z (cor azul). Na opção girar, observe que as cores continuam indicando exatamente sobre qual eixo giram. 9

Representação Matemática Por mais que movimente e gire seu objeto, os eixos permanecem inalterados. Este comportamento é devido ao fato de estarmos utilizando referencia global. 10

Representação Matemática Todo objeto, mesmo uma bola, possui uma face, ou lado, que é considerado como sua frente. Caso emitirmos um comando para o objeto ir para frente, é a direção em que esta face aponta que nosso objeto seguira. 11

llGetPos / llSetPos llGetPos(); Esta função simplesmente retorna um valor do tipo vector, representado a localização do objeto, em relação ao território onde esta. llSetPos(posição); Informa ao objeto qual será sua nova posição. O valor passado como argumento da função é um vector com as coordenadas desejadas. Não funciona para objetos físicos. 12

llSetPos O objeto não se desloca até chegar a posição final, ele vai direto á posição informada. Esta função possui um delay de 0.2 segundos. Temos uma limitação de 10 metros na distância que definimos como destino. Nota: Se desejarmos que o objeto suba 30 metros, devemos fazer um loop para que a função seja executada 3 vezes, especificando 10 metros como incremento em seu eixo z. 13

llVecDist llVecDist(posição1, posição2); Utilizado para saber a distância exata entre dois objetos. Retorna um float contendo a distância entre a posição 1 e a posição 2. Passa o vector da posição de cada um deles com primeiro e segundo argumento. 14

llVecMag llVecMag(posição); Esta função retorna a distância que a posição passada como argumento esta da posição <0.0,0.0,0.0>. Esta função retorna um float. A distância é expressada em metros. 15

llGround / llStopMoveToTarget llGround(deslocamento); Retorna um float com a altura da terra, na posição especificada por deslocamento. llStopMoveToTarget(); Faz o objeto parar de se mover. 16

llMoveToTarget llMoveToTarget(posição, tempo); Esta função atua sobre objetos físicos, fazendo com que o objeto alcance a posição passada como parâmetro, dentro do tempo (em segundos). Nota: o objeto se mantém movimentando para a posição, mesmo depois de chegar a ela. Seria como se disséssemos ao objeto, “mova-se para tal posição, em tantos segundos, e permaneça lá ate outra ordem”. 17

llMoveToTarget A posição especificada não pode estar a mais de 66 metros de distância. Se especificarmos um tempo de 0.0 segundos, o objeto para de se mover. 18

Relembrado Rotation Este tipo manipula rotações. Representa um elemento matemático chamado de quaternion. É formado pelos eixos x, y e z, e um quarto número, representa se a rotação será pela esquerda ou direita. Em SL, para acessar cada elemento deste vetor, especificando .x, .y, .z ou .s 19

Graus e Radiandos Escalas que medem as rotações de um objeto. Infelizmente, o SL não trabalha diretamente com graus, e sim com radianos.  Porém, temos algumas facilidades (funções) que nos permitem converter de graus para radianos sem maiores dificuldades.  20

Graus e Radiandos Para nós, o importante é saber que: 360º = 2 * PI = TWO_PI radianos Nota: PI é uma constante matemática que vale aproximadamente 3,14. Para especificar uma rotação de 360º em radianos, utilizamos 2*P ou TWO_PI. 21

Graus e Radiandos 180º = PI radianos (mesmo racionio anterior) Para especificar uma rotação de 180º em radianos, utilizamos PI 90º = PI_BY_TWO = PI/2 radianos Para especificar uma rotação de 360º em radianos, utilizamos PI_BY_TWO 22

Graus e Radiandos DEG_TO_RAD Graus para Radianos. Quando o ângulo (em radianos) não for um dos casos falados anteriormente, podemos converte-lo para radianos multiplicando o mesmo pela constante DEG_TO_RAD. RAD_TO_DEG Converte radianos para graus. Nota: as constantes citadas acima são em MAIUSCULAS. 23

Euler Leonhard Euler foi um matemático e físico que desenvolveu um sistema de referência chamado Ângulos de Euler. Para dar uma orientação a um objeto específico, é necessário submetê-lo a uma seqüência de três rotações descritas pelos ângulos de Euler. Trabalhar diretamente com o tipo rotation não é tarefa fácil. 24

Euler Precisamos especificar o valor de rotação (em radianos, para cada eixo, e especificar o sentido e quantidade de rotações. Para facilitar nossa vida, podemos usar um valor do tipo vector, na qual apenas trabalharemos com 3 valores, representando cada um dos eixos. 25

Euler Esta forma de representar rotações, é conhecida com Representação Euler de uma rotação. A representação de Euler pode ser convertida para Rotation através de funções. Na representação Euler trabalha com graus. Sendo assim, além de convertê-la para rotation, também precisamos converter os valores em graus para radianos. 26

Euler Quando emitimos um comando para que um objeto se mova, temos 2 opções: Sabemos para qual posição queremos que nosso objeto se mova, relativo a região em que esta. Podemos usar llSetPos para objetos não físicos, e llMoveToTarget para objetos físicos. 27

Euler Quisermos que o objeto se mova para frente, tantos metros. Precisamos conhecer a rotação de um objeto, para saber se aponta para a direção correta que queremos que se mova, caso esteja fora da rotação adequada, teremos que saber quanto e sobre qual eixo rotacionar o objeto, para que nosso movimento seja exato. 28

llEuler2Rot llEuler2Rot(rotação); Retorna um valor do tipo rotation, a partir do vector rotação passado como argumento. Após definirmos uma rotação, na representação Euler, convertemos para rotation passando a mesma para esta função. Observe que precisamos também converter o valor em graus para radianos, fazendo uso da constante DEG_TO_RAD. 29

llRot2Euler llRot2Euler(rotação); O inverso da função anterior. Transforma o valor do tipo rotation passado como parâmetro, para um vector em representação Euler. Nota: Não se esqueça de usar a constante RAD_TO_DEG para transformar os radianos em graus. 30

llGetRot / llSetRot llGetRot(); Retorna um valor do tipo rotation, represen-tando a orientação do objeto. llSetRot(rotação); Esta função rotaciona o objeto para a nova orientação, especificada pelo parâmetro passado com um valor do tipo rotation. Funciona apenas com objetos não-físicos. 31

llTargetOmega llTargetOmega(eixo,volta,força); Esta função rotaciona um objeto sobre o eixo especificado pelo valor do tipo vector, passado como parâmetro. O argumento volta, é uma valor do tipo float, e especifica o número de revoluções (voltas, girar em torno do eixo especificado) que o objeto fará. As revoluções são em radianos por segundo, e basicamente determina quão rápido nosso objeto ira girar. 32

llTargetOmega O último parâmetro, força, é útil apenas em objetos físicos, apesar de não poder ser 0 em objetos não físicos. Basicamente determina a força com que o objeto ira girar. llTargetOmega atua diferentemente em objetos físicos e não físicos. Objetos físicos = utiliza os eixos do objeto (rotação local). Objetos não-físicos = utiliza eixos globais. 33

Diferença A diferença entre llTargetOmega e llSetRot llSetRot rotaciona o objeto apenas uma vez, orientando o mesmo na rotação indicada llTargetOmega rotaciona o objeto continuamente. 34

Exercício 7 Crie uma esfera (não-física) e insira o seguinte código: default { state_entry() llTargetOmega(<0.0,0.0,1.0>,TWO_PI,1); } Faz com que o objeto fique rotacionando sobre seu eixo z. O objeto completará uma volta completa a cada segundo. Altere o valor do segundo parâmetro, e verifique que o objeto aumenta, ou diminui a rotação, conforme o novo valor. 35

Exercício 8 Crie um cubo (não-físico) e insira o seguinte código: vector e_rot; //variável Euler rotation rot; //variável rotation default { state_entry() } touch_start(integer c) e_rot=<50.0,90.0,90.0>; //atribui orientação ao vetor rot=llEuler2Rot(e_rot * DEG_TO_RAD); //atribuí o retorno da função llEuler2Rot sobre o vetor Euler - retorna um valor do tipo rotation llSetRot(rot); //rotaciona o objeto Altere o valor do segundo parâmetro, e verifique que o objeto aumenta, ou diminui a rotação, conforme o novo valor. Preste atenção, uma vez que a rotação tenha sido feita, nada mais ocorre, pois o objeto já se encontra na orientação desejada. 36

Exercício 9 //Não consegue um movimento uniforme devido ao delay da função llSetRot. vector e_rot=<0.0,0.0,45.0>; //declara vetor e atribui uma rotação de 45º em z rotation rot; default { state_entry() llSetTimerEvent(0.1); //prepara o evento timer p/ responder a cada 1 seg. rot=llGetRot(); //guarda a orientação atual na variável rot e_rot=e_rot * DEG_TO_RAD; //transforma graus em radianos } //evento Timer timer() rot= rot * llEuler2Rot(e_rot); llSetRot(rot); //atualiza a orientação do objeto, girando em mais 45º graus Não-físico 37

Exercício 10 Crie um objeto físico e coloque o seguinte código: default { state_entry() llTargetOmega(<0.0,0.0,1.0>,TWO_PI,1.0); } touch_start(integer c) llMoveToTarget(<60.0,150.0,40.0>,5); llSetTimerEvent(2); timer() llStopMoveToTarget(); llSetTimerEvent(0.0); 38

Exercício 11 default { state_entry() llSetText(" Objeto que gira sem parar ", <0.0,1.0,0.0>,1.0); // rotacionando o eixo x uma vez por segundo // rotacionando o eixo y 3 vez por segundo // rotacionando o eixo z uma vez por segundo llTargetOmega(<1.0,3.0,1.0>,TWO_PI,1.0); } 39

Exercício 12 default { state_entry() llSetText(" Clique para girar ", <0.0,1.0,0.0>,1.0); state voltar; } state ir touch_start(integer total_number) llSetText(" Clique para parar ", <0.0,1.0,0.0>,1.0); llTargetOmega(<1.0,3.0,0.5>,TWO_PI,1.0); 40

Exercício 12 state voltar { touch_start(integer total_number) llTargetOmega(<0.0,0.0,0.0>,0,0.0); llSetText(" Clique para girar ", <0.0,1.0,0.0>,1.0); state ir; } 41

Bibliográfia Guia de Script no Second Life. By Valdinei Rodrigues dos Reis Creating Your World: The Official Guide to Advanced Content Creation for Second Life. by Aimee Weber, Kimberly Rufer-Bach and Richard Platel. Wiley Publishing, Inc. ISBN: 978-0-470-17114-1 Second Life For Dummies. By Sarah Robbins, Mark Bell. Wiley Publishing, Inc. ISBN: 978-0-470-18025-9. Second Life: o Guia Oficial. By A P Watt Ltd. Editora: Ediouro. Ano: 2007. Edição: 1. ISBN: 9788500019616. LSL Guide http://wiki.secondlife.com/wiki 42