FANDOM


De forma a dar continuidade ao trabalho iniciado nas sessões anteriores, foi proposto neste assignment que se continuasse a aplicar scripts de forma a animar vários objectos no Second Life. Como resposta a essa proposta, o presente trabalho vem demonstrar a aplicação de scripts para controlo dos equipamentos projectados nos assignments 3 e 4.

O presente trabalho terá, então, a seguinte ordem de tarefas:


  • Programação da abertura da escotilha de manutenção do reactorde mistura;
  • Aperfeiçoamento da animação do moinho.

Abertura e fecho de escotilhas

A abertura das escotilhas pode ser programada pela introdução de um comando de rotação no script associado à dobradiça da escotilha. Pretende-se que as escotilhas possam ser abertas para que seja possível visualizar o interior do equipamento, e também dar um aparente aspecto funcional à escotilha do doseador que tem de ser aberta sempre que se põe a funcionar o moinho.

No presente projecto existem, actualmente, três equipamentos com escotilhas: o doseador, o reactor de mistura e o reactor de cozimento.

Começando pelo reactor de mistura, as escotilhas existentes neste equipamento situam-se no topo e na parte lateral. A escotilha do topo tem a função de inspeccionar o interior do reactor, e a escotilha lateral permite realizar tarefas de inspecção, manutenção e limpeza do reactor. Para nós, a escotilha que interessa abrir e fechar é a escotilha lateral, visto que nos vai permitir futuramente observar as pás em funcionamento do reactor.

A construção do script de abertura é simples. Pela introdução de um comando de rotação no script podemos definir uma posição de abertura e uma posição de fecho e, reagindo ao toque sobre a escotilha, a escotilha abre ou fecha.


O script construído para esta função foi o seguinte:

default
{
    touch_start(integer total_number)
    {
        rotation rot = llGetLocalRot();
       
        if (rot.z == 0)
        {
            rot.z = 0.819152;
            rot.s = 0.573576;
    }
    else
    {
        rot.z = 0;
        rot.s = 1;
    }
    llSetLocalRot(rot);   
    }}


O resultado da aplicação deste script pode ser visualizado na Figura 1 e na Figura 2.




RM 003

Figura 1. Escotilha fechada.

RM 002

Figura 2. Escotilha aberta

Aperfeiçoamento da animação do moinho

Rectificação da velocidade de rotação

Para efectuar a correcção da velocidade de rotação do motor e das mós, é necessário recorrer a conhecimentos aplicados em mecânica. As velocidades que se pretendem estimar são as velocidades do motor e da primeira polia, pois a segunda polia terá a mesma velocidade que a primeira pois o diametro é igual.

Assumindo que a ligação entre as duas polias não é elástica e não há escorregamento, as duas polias giram em sincronia com velocidade igual, logo:

V_1=V_2

Sendo que a velocidade da polia é dada por:

V_1=\omega_1 \times R_1 \Leftrightarrow
V_1=2 \times \pi \times f_1 \times R_1

Então podemos calcular a frequência da segunda polia através de:

\frac{f_1}{f_2}=\frac{R_2}{R_1}

Considerando que a frequência a que se pretende que as mós rodem é de 40 rpm, a frequência do motor será dada por:

\frac{40}{f_2}=\frac{0.073}{0.03} \Leftrightarrow f_2=97,3 rpm

Modificação do script de rotação

No assigment anterior foi criado um script para a rotação das mós a partir de valores arbitrários. Neste assignment pretende-se corrigir a velocidade para um valor calculado de forma a dar coerência ao projecto e introduzir no script funções de controlo do motor e das polias. Ou seja, pretende-se que quando for digitado um comando de inicio de processo "start_moinho" o motor e as mós se movam à velocidade calculcada e, quando for inroduzido o comando "stop_moinho", estes parem.

Desta forma, o script para o motor será:

default
{
    state_entry()
    {
        llListen(0, "", NULL_KEY, "" );
    }
    listen(integer channel, string name, key id, string message)
    {
        if (llToLower(message) == "start_moinho")
        {
            llTargetOmega(<1.62222,0,0>,TWO_PI,1.0);
        }
        else
        {
            if (message == "stop_moinho")
            {
                llTargetOmega(<0,0,0>,TWO_PI,1.0);
            }
        }
    }}

A codificação do comando llTargetOmega traduz a velocidade angular da rotação de um objecto. Resulta da multiplicação de uma frequência, definida sobre o eixe cartesiano x, y, z, em Hz (rotações por segundo) multiplicado por duas vezes pi. No caso do motor e das mós só nos interessa a rotação sobre o eixo do xx.

Depois de aplicado o mesmo script às peças das mós, modificando o valor da velocidade, foi possível testá-lo como pode ser observado no Video 1.


File:PPI 09 Assignment 06 Moinho

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.