J2ME/Lições/M3G/Modificando objetos 3D: diferenças entre revisões

[edição verificada][revisão pendente]
Conteúdo apagado Conteúdo adicionado
He7d3r.bot (discussão | contribs)
Trocando categorização manual por AutoCat (o indexador da categoria estava incorreto) [ usando AWB ]
m <source> -> <syntaxhighlight> (phab:T237267)
 
Linha 7:
Primeiramente vamos translatar a câmera que você criou e armazenou no arquivo .m3g, para isso vamos criar um objeto do tipo '''Camera()''' e inicializa-lo.
 
<sourcesyntaxhighlight lang="java">
import javax.io.*;
import javax.microedition.lcdui.*;
Linha 49:
}
}
</syntaxhighlight>
</source>
 
Criamos a variável minhaCamera, mas nenhuma câmera foi colocada lá, agora vamos fazer isso através do nosso objeto do tipo '''World''', utilizando o método '''getActiveCamera()'''.
 
<sourcesyntaxhighlight lang="java">
import javax.io.*;
import javax.microedition.lcdui.*;
Linha 96:
}
}
</syntaxhighlight>
</source>
 
Agora com a câmera armazanada vamos movimenta-la, para isso só precisamos pegar emprestado da classe '''World''' o método '''setTranslation()''' que irá receber 3 variáveis float, que serão respectivamente o eixo x, y e z.
 
<sourcesyntaxhighlight lang="java">
import javax.io.*;
import javax.microedition.lcdui.*;
Linha 144:
}
}
</syntaxhighlight>
</source>
 
===Pegando a translação de um objeto===
Linha 150:
Vamos ver agora como pegar a translação (posição dentro do mundo) de um objeto, vamos usar o mesmo exemplo anterior.
 
<sourcesyntaxhighlight lang="java">
import javax.io.*;
import javax.microedition.lcdui.*;
Linha 194:
}
}
</syntaxhighlight>
</source>
 
Vamos pegar a posição X, Y e Z da câmera, para isso vamos inicialmente criar um array float de 3 posições chamado '''posicaoCamera[]''', e inicia-lo com 0.
 
<sourcesyntaxhighlight lang="java">
public class ClasseMeuGameCanvas extends GameCanvas implements Runnable {
Thread meuThread;
Linha 239:
}
}
</syntaxhighlight>
</source>
 
Agora dentro do loop principal vamos usar o método '''getTranslation()''' e entrar como parâmetro a variável float que criamos que vai pegar os 3 atributos X, Y e Z nessa ordem, como saída vamos dar um '''System.out.println()''' para exibir cada posição.
 
<sourcesyntaxhighlight lang="java">
public class ClasseMeuGameCanvas extends GameCanvas implements Runnable {
Thread meuThread;
Linha 288:
}
}
</syntaxhighlight>
</source>
 
===Orientação de um objeto===
Linha 294:
Vamos agora ver como orientar (rotacionar) um objeto 3D, vamos fazer como anteriormente, carregar o objeto, coloca-lo no objeto World e colocar a câmera na classe Camera.
 
<sourcesyntaxhighlight lang="java">
//arquivo ClasseMeuCanvas.java
import java.io.*;
Linha 336:
}
}
</syntaxhighlight>
</source>
 
Vamos agora utilizar o método '''setOrientation()''' e entrar como parâmetro respectivamente o angulo, o componente de roatação X, o componente de roatação Y e o componente de roatação Z. Esses componentes de rotação se colocados como 0 não irão alterar o eixo de rotação.
 
 
<sourcesyntaxhighlight lang="java">
//arquivo ClasseMeuCanvas.java
import java.io.*;
Linha 384:
}
}
</syntaxhighlight>
</source>
 
No exemplo a câmera irá girar 10 graus no eixo X, 20 graus no eixo Y, e 0 graus no eixo Z.
Linha 392:
Vamos ver agora como pegar a orientação de um objeto, vamos usar o mesmo exemplo anterior.
 
<sourcesyntaxhighlight lang="java">
import javax.io.*;
import javax.microedition.lcdui.*;
Linha 437:
}
}
</syntaxhighlight>
</source>
 
Vamos pegar a rotação X, Y e Z da câmera, para isso vamos inicialmente criar um array float agora de 4 posições chamado orientacaoCamera[], e inicia-lo com 0.
 
<sourcesyntaxhighlight lang="java">
import javax.io.*;
import javax.microedition.lcdui.*;
Linha 488:
}
}
</syntaxhighlight>
</source>
 
Agora dentro do loop principal vamos usar o método '''getOrientation()''' e entrar como parâmetro a variável float que criamos que vai pegar os 4 atributos, como saída vamos dar um System.out.println() para exibir cada um.
 
<sourcesyntaxhighlight lang="java">
import javax.io.*;
import javax.microedition.lcdui.*;
Linha 544:
}
}
</syntaxhighlight>
</source>
 
===Pegando um objeto específico===
Linha 552:
Primeiramente vamos pegar os exemplos anteriores.
 
<sourcesyntaxhighlight lang="java">
import javax.io.*;
import javax.microedition.lcdui.*;
Linha 596:
}
}
</syntaxhighlight>
</source>
 
Agora vamos criar o objeto '''Node''', que é o objeto que pode pegar a referência de uma câmera, mesh, luz, etc...
 
<sourcesyntaxhighlight lang="java">
import javax.io.*;
import javax.microedition.lcdui.*;
Linha 645:
}
}
</syntaxhighlight>
</source>
 
Agora vamos usar o método '''getChild()''' no objeto '''World''' e entrar como parâmetro a idêntificação do objeto selecionado.
 
<sourcesyntaxhighlight lang="java">
import javax.io.*;
import javax.microedition.lcdui.*;
Linha 695:
}
}
</syntaxhighlight>
</source>
 
Agora usamos normalmente os métodos para modificar o Node, nesse caso vamos move-lo usando '''translate()'''.
 
<sourcesyntaxhighlight lang="java">
import javax.io.*;
import javax.microedition.lcdui.*;
Linha 746:
}
}
</syntaxhighlight>
</source>
 
===Animando um objeto 3D===
Linha 752:
Você colocou um objeto 3D para ser mostrado no seu aplicativo, mas se você criou um objeto animado deve ter notado que o objeto não expressou nenhum quadro da animação. Para fazer isso vamos usar o método '''animate()''' da classe '''World''' e receber como parâmetro, uma variavel '''int''' que irá incrementar a cada frame.
 
<sourcesyntaxhighlight lang="java">
//arquivo ClasseMeuCanvas.java
import java.io.*;
Linha 795:
}
}
</syntaxhighlight>
</source>
 
Agora vamos chamar o método '''animate()''' e como parâmetro colocar uma variavel para a contagem do frame para a animação do objeto.
 
<sourcesyntaxhighlight lang="java">
//arquivo ClasseMeuCanvas.java
import java.io.*;
Linha 844:
}
}
</syntaxhighlight>
</source>
 
{{AutoCat}}