Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos...
Transcript of Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos...
![Page 2: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/2.jpg)
2
Classes de jogo
Audio XACT
Cenários 3D / Malhas 3D
Vértices / Tipos de Primitivas / Convenções XNA
Pipeline de processamento
Classe BasicEffect
Câmera
Desenhando primitivas
Luzes
![Page 3: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/3.jpg)
3
Texturização
Vertex Buffer e Index Buffer
Modelos 3D
Transformações
![Page 4: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/4.jpg)
4
GameComponent / DrawableGameComponent
Classes utilizadas para criar componentes para o jogo
Podem ser adicionadas a lista de componentes da classe Game para serem usadas automaticamente
O objetivo principal é o reuso de código
Exemplo
É possível criar um GameComponent contador de fps. E o mesmo pode ser usado em qualquer projeto XNA
![Page 5: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/5.jpg)
5
GameComponent
Componentes de jogo que precisam ser atualizados
DrawableGameComponent
Componentes de jogo que precisam ser atualizados e desenhados
![Page 6: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/6.jpg)
6
Os métodos que devem ser implementados nessas classes são similares aos métodos da classe Game
Initialize
LoadGraphicsContent (Somente Drawable)
UnloadGraphicsContent (Somente Drawable)
Update
Draw (Somente Drawable)
![Page 7: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/7.jpg)
7
Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas)
Baseado no XACT (Microsoft Cross-Platform Audio Creation Tool)
Facilita criação e gerenciamento de bancos de sons (compostos por arquivos wav)
![Page 8: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/8.jpg)
8
Criando banco de sons
Inicializar o XACT e o servidor de sons
Criar um novo banco de waves
Criar um novo banco de sons
Adicionando sons
Adicionar um wav ao banco de waves
Criar um cue para este wav no banco de sons
(Arraste o wav para o cues)
![Page 9: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/9.jpg)
9
Após adicionar todos os sons o projeto XACT deve ser salvo
A extensão do arquivo é .xap
Este arquivo deve ser adicionado ao projeto para ser compilado pelo Content Pipeline
Após a compilação são gerados três arquivos:xgs (Global Settings), xwb (Wave bank) e xsb (Sound Bank)
![Page 10: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/10.jpg)
10
Exercício 0 – Adicionar reprodução de músicas
Passos
Criar um projeto XACT (Como descrito)
Adicionar o projeto XACT ao projeto para ser compilado pelo Content Pipeline
Instanciar um AudioEngine utilizando o arquivo de xgs(Global Settings) gerado pelo Content Pipeline
Instanciar SounBank e WaveBank usando o nome dos bancos de waves e sons definidos no projeto XACT
Reproduzir o som
Atualizar o AudioEngine
![Page 11: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/11.jpg)
11
Instanciar o AudioEngine, WaveBank e SoundBank
audioEngine = new AudioEngine("Sounds.xgs")
waveBank = new WaveBank(audioEngine, "WaveBank1.xwb")
soundBank = new SoundBank(audioEngine, "SoundBank1.xsb")
Reproduzindo um cue
soundBank.PlayCue("pike2“)
![Page 12: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/12.jpg)
12
Atualizando o AudioEngine
audioEngine.Update()
![Page 13: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/13.jpg)
13
Criando Jogos em 3D
![Page 14: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/14.jpg)
14
Para criarmos um cenário tridimensional precisamos definir e criar um conjunto de objetos
Câmeras
Luzes
Malhas
Outros
Esses objetos criados são analogos a se tivessemos criando um filme
A criação de um cenário 3D no XNA segue esse mesmo modelo, onde precisamos definir
![Page 15: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/15.jpg)
15
Objetos do mundo real podem ser representados computacionalmente através da malha de sua superfície
Uma bola pode ser representada através da superfície de uma esfera
Para acelerar o processamento as malhas são decompostas em primitivas geométricas
As primitivas geralmente utilizadas são os triângulos
Qualquer malha do mundo real pode ser decomposta em triângulos
![Page 16: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/16.jpg)
16
Chaleira
A superfície da chaleira é formada por um arranjo de triângulos
![Page 17: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/17.jpg)
17
![Page 18: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/18.jpg)
18
Terreno formado por um conjunto de triângulos
![Page 19: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/19.jpg)
19
A malha da superfície dos objetos é armazenada através dos seus vértices
Cada vértice pode armazenar várias informações:
Posição, Cor, Normal, Coordenada de textura e outros
O XNA já possui várias classes Helpers para armazenar diferentes formatos de vértice
VertexPositionColor: Armazena a posição e a cor do vértice
VertexPositionNormalTexture: Armazena a posição, a normal e a coordenada de textura do vértice
Várias outros
![Page 20: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/20.jpg)
20
O XNA também permite que você crie seu próprio formato de vértices
Necessário para utilizar recursos avançados como Normal Mapping
Exemplo:
VertexPositionNormalTangentBinormal: Armazena a posição do vértice e sua tangente, binormal e normal
Esses três vetores são necessários para utilizarmos Normal Mapping
![Page 21: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/21.jpg)
21
O XNA é capaz de desenhar três tipos diferentes de primitivas
v1
Pontos Linhas Triângulos
v2
v3v4
v5
v6
v1v2
v3v4
v5
v6
v1v2
v3v4
v5
v6
![Page 22: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/22.jpg)
22
Existem várias maneiras de desenhar cada primitiva
Listas: Triangle List, Line List, Point ListDefinem uma lista de primitivas
Strips: Triangle Strip, Line StripDesenham primitivas em série fazendo uso dos vértices das primitivas anteriores
Fan: Triangle FanDesenha várias primitivas onde o centro de cada uma é o primeiro vértices especificado
![Page 23: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/23.jpg)
23
Exemplo: Triângulos
Triangle List: Cada três vértices formam um triângulo.Número de triângulos = Num Vértices / 3
Triangle Strip: Após o primeiro triângulo, cada novo vértice é combinado com os dois últimos e forma um novo triânguloNúmero de triângulos = Num Vértices – 2
Triangle Fan: Após o primeiro triângulo, cada novo vértice adicionado é combinado ao primeiro e ao último vértice criado e forma um novo triângulo.Número de triângulos = Num Vértices - 2
![Page 24: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/24.jpg)
24
Triangle Strip
v3v4
v2v1
v0
v5v2
v1
v3v0
v4v5
v6
Triangle Fan
![Page 25: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/25.jpg)
25
No XNA a enumeração PrimitiveType lista todos os tipos de construção de primitivas válido
É necessário especificar o tipo de primitiva na hora de desenhar uma malha
![Page 26: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/26.jpg)
26
Sistema de coordenadas
Diferente do DirectX o XNA utiliza o sistema de coordenadas da mão direita
Sistema damão esquerda
Sistema damão direita
![Page 27: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/27.jpg)
27
Ordenação de primitivas
Diferente do DirectX e do OpenGL, a ordenação de primitivas padrão do XNA é Clockwise (CW)
V1
V3 V2
V1
V2 V3
Clockwise Counterclockwise
![Page 28: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/28.jpg)
28
As APIs gráficas suportam basicamente dois tipos de pipelines de processamento
Pipeline fixo
Todo o processamento dos vértices, geometrias e pixelsé fixo e pré-programado
Limita as possibilidades, jogos com uma mesma aparência final
VertexData
IndexData
VertexProcessing
GeometryProcessing
PixelProcessing
FinalImage
![Page 29: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/29.jpg)
29
Pipeline programável
É possível programar os estágios de processamento do pipeline
Permite criar novos modelos de iluminação, deformar malhas na GPU, adicionar efeitos de pós-processamento e vários outros
No Xbox 360 apenas o pipeline programável é suportado, não existindo um pipeline fixo
No XNA o pipeline fixo também não é suportado
![Page 30: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/30.jpg)
30
A classe BasicEffect encapsula um processamento padrão de vértices e de pixels utilizando shaders
Simula o pipeline fixo de processamento, abstraindo a programação de shaders
Suporta os modelos de shader 1.1 e 2.0
Possui suporte a iluminação com luzes direcionais, texturização, fog e outros
Suporta iluminação por vértice e por pixel
Ainda muito limitada! Não suporta multi-texturização, luzes pontais ou spot e outros
![Page 31: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/31.jpg)
31
A classe BasicEffect funciona similar a classe SpriteBatch
É necessário chamar o método Begin antes de começar o desenho dos objetos e o método End quando terminar
Cada efeito na classe BasicEffect pode ter vários passos
É necessário percorrer todos os passos desenhando os objetos
![Page 32: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/32.jpg)
32
Para desenhar um objeto são necessários os passos
Especificar o formato de vértice do objeto a ser desenhado (Qual formato estamos utilizando ?)
Iniciar o efeito
Fazer um laço por todos os passos do efeito
Iniciar o passo do efeito
Desenhar o objeto
Terminar o passo do efeito
Terminar o efeito
![Page 33: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/33.jpg)
33
As câmeras podem ser configuradas através da classe BasicEffect
Assim como em outras APIs gráficas precisamos definir as matrizes de Projeção e Visão para a câmera
Projeção: Como a cena tridimensional será projetada para que possamos observá-la em um monitor 2D
Visão: Posição e orientação da câmera no mundo
A classe Matrix possui vários métodos para auxiliar a criação de câmera
![Page 34: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/34.jpg)
34
Projeção
Matrix.CreatePerspectiveFieldOfView: Cria uma câmera com projeção perspectiva, similar ao olho humano
O tamanho dos objetos muda de acordo com a distância que eles são observados
![Page 35: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/35.jpg)
35
Visão
Matrix. CreateLookAt: Posiciona e orienta a câmera no mundo
Posição do Olho
Vetor cima
Posição observada
![Page 36: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/36.jpg)
36
A classe GraphicsDevice possui vários métodos para o desenho de objetos
Desenho de geometrias com ou sem índice
Desenho de geometrias especificadas pelo usuário ou utilizando Vertex e Index Buffers
Nos exercícios utilizaremos o desenho de objetos especificados pelo usuário
DrawUserPrimitives (TipoPrimitiva, Vértices, Offset (0), número de primitivas)
![Page 37: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/37.jpg)
37
Exercício 1 - Desenhando um triângulo colorido na tela
Passos
Criar e configurar a classe BasicEffect
Configurar uma câmera
Criar os vértices do triângulo (VertexPositionColor)
Desenhar o triângulo usando TriangleList
![Page 38: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/38.jpg)
38
Criândo e configurando a classe BasicEffect
basicEffect = new BasicEffect(graphics.GraphicsDevice, null);
Habilitando a coloração dos vértices
basicEffect.VertexColorEnabled = true;
![Page 39: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/39.jpg)
39
Criândo projeção da câmera
Viewport vp = graphics.GraphicsDevice.Viewport;
float fovY = MathHelper.ToRadians(60.0f);
float aspect = vp.Width / (float)vp.Height;
float nearPlane = 1.0f;
float farPlane = 1000.0f;
cameraProjection = Matrix.CreatePerspectiveFieldOfView( fovY, aspect, nearPlane, farPlane);
Configurando efeito
basicEffect.Projection = cameraProjection;
![Page 40: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/40.jpg)
40
Criando a visão da câmera
Vector3 cameraPosition = new Vector3(0.0f, 0.0f, 2.0f);
Vector3 targetPosition = new Vector3(0.0f, 0.0f, 0.0f);
Vector3 upVector = new Vector3(0.0f, 1.0f, 0.0f);
cameraView = Matrix.CreateLookAt(cameraPosition, targetPosition, upVector);
Configurando o efeito
basicEffect.View = cameraView;
![Page 41: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/41.jpg)
41
Criândo os vértices do triânguloprivate void CreateTriangle()
{
vertices = new VertexPositionColor[3];
vertices[0].Position = new Vector3(0.0f, 1.0f, 0.0f);
vertices[0].Color = Color.Green;
vertices[1].Position = new Vector3(1.0f, -1.0f, 0.0f);
vertices[1].Color = Color.Red;
vertices[2].Position = new Vector3(-1.0f, -1.0f, 0.0f);
vertices[2].Color = Color.Blue;
}
![Page 42: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/42.jpg)
42
Desenhando o triângulo
graphics.GraphicsDevice.VertexDeclaration = new VertexDeclaration(graphics.GraphicsDevice, VertexPositionColor.VertexElements);
basicEffect.Begin();
foreach (EffectPass pass in basicEffect.CurrentTechnique.Passes) {
pass.Begin();
graphics.GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleList, vertices, 0, 1);
pass.End();
}
basicEffect.End();
![Page 43: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/43.jpg)
43
Exercício 2 - Desenhando um quadrado colorido na tela
Passos
Criar os vértices do quadrado (VertexPositionColor)
Desenhar o quadrado usando TriangleStrip
![Page 44: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/44.jpg)
44
Criando vértices do quadrado
vertices = new VertexPositionColor[4];
vertices[0].Position = new Vector3(-1.0f, 1.0f, 0.0f);
vertices[0].Color = Color.Red;
vertices[1].Position = new Vector3(1.0f, 1.0f, 0.0f);
vertices[1].Color = Color.Red;
vertices[2].Position = new Vector3(-1.0f, -1.0f, 0.0f);
vertices[2].Color = Color.Yellow;
vertices[3].Position = new Vector3(1.0f, -1.0f, 0.0f);
vertices[3].Color = Color.Yellow;
![Page 45: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/45.jpg)
45
Desenhando o quadrado como um TriangleStip
graphics.GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, vertices, 0, 2);
Repare que agora estamos usando o tipo de primitiva TriangleStrip
E o número de primitivas construidas agora são 2
![Page 46: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/46.jpg)
46
A iluminação é usada para adicionar realismo as cenas
![Page 47: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/47.jpg)
47
A cor final de cada ponto da superfície iluminada é calculo com base em vários fatores
Tipo de luz e posição/direção
Posição do ponto iluminado na superfície do objeto e normal deste ponto
Componentes de luz (Ambiente, Difuso e Especular)
Material do objeto
Também é possível misturar a cor resultado da iluminação com outras cores do objeto
Como uma cor de preenchimento sólida ou uma textura
![Page 48: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/48.jpg)
48
COMPONENTEAMBIENTE
COMPONENTEDIFUSA
COMPONENTEESPECULAR
Iluminação de Phong
![Page 49: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/49.jpg)
49
IMAGEM FINALADIÇÃO DE TODAS AS COMPONENTES
![Page 50: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/50.jpg)
50P
ON
TUA
LD
IREC
ION
AL
HOLOFOTE
![Page 51: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/51.jpg)
51
A classe BasicEffect possui suporte apenas a luzes direcionais
Além disso, são suportadas apenas 3 fontes de luz
Utilizando shaders é possível criar outros modelos de iluminação e utilizar um número muito maior de fontes de luz
![Page 52: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/52.jpg)
52
Exercício 3 - Desenhando um quadrado com normais e utilizar iluminação padrão
Passos
Configurar a classe BasicEffect
Adicionar normais aos vértices do quadrado
Desenhar o quadrado
OBS: Agora que iremos utilizar iluminação os vértices do triângulo devem usar o formato VertexPositionNormalTexture
![Page 53: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/53.jpg)
53
Configurando BasicEffect para usar iluminação padrão
basicEffect.LightingEnabled = true;
basicEffect.EnableDefaultLighting();
Observe que agora a coloração dos vértices não deve estar habilitada
![Page 54: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/54.jpg)
54
Criando vértices do triângulo
vertices = new VertexPositionNormalTexture[3];
vertices[0].Position = new Vector3(0.0f, 1.0f, 0.0f);
vertices[0].Normal = new Vector3(0.0f, 0.0f, 1.0f);
vertices[1].Position = new Vector3(1.0f, -1.0f, 0.0f);
vertices[1].Normal = new Vector3(0.0f, 0.0f, 1.0f);
vertices[2].Position = new Vector3(-1.0f, -1.0f, 0.0f);
vertices[2].Normal = new Vector3(0.0f, 0.0f, 1.0f);
Todas as normais apontam para (0, 0, 1)
![Page 55: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/55.jpg)
55
Desenhar o triângulo
Só precisamos modificar o formato de vértice para o novo formato utilizado
graphics.GraphicsDevice.VertexDeclaration = new VertexDeclaration(graphics.GraphicsDevice, VertexPositionNormalTexture.VertexElements);
![Page 56: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/56.jpg)
56
Exercício 4 - Desenhando um quadro com normais e configurando uma iluminação
Passos
Configurar a classe BasicEffect
![Page 57: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/57.jpg)
57
Configurando uma iluminação
basicEffect.LightingEnabled = true;
basicEffect.AmbientLightColor = new Vector3(0.2f, 0.2f, 0.2f);
basicEffect.DirectionalLight0.Direction = new Vector3(0.0f, -1.0f, -1.0f);
basicEffect.DirectionalLight0.DiffuseColor = new Vector3(0.8f, 0.8f, 0.8f);
basicEffect.DirectionalLight0.SpecularColor = new Vector3(0.3f, 0.3f, 0.3f);
basicEffect.DirectionalLight0.Enabled = true;
![Page 58: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/58.jpg)
58
Conceito já apresentado na primeira aula
Uma imagem mapeada para a superfície de um objeto
Mas como mapear uma imagem para uma superfície?
![Page 59: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/59.jpg)
59
O mapeamento é feito no espaço 2D da primitiva e define como a imagem é aplicada a superfície
Segue o mesmo mapeamento da janela
(0,0) U
V
(1,1)
![Page 60: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/60.jpg)
60
O intervalo de mapeamente do textura é [0, 1]
O tamanho da textura é normalizado entre 0 e 1, onde 0 representa o início da textura e 1 o final
É possível escolher qual parte da textura será exibida, mapeando valores entre 0 e 1
Mapeamentos que ultrapasse o valor 1 pode repetir o último texel da textura, ou repetir a textura inteira
![Page 61: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/61.jpg)
61
Exercício 5 - Desenhando um quadrado com iluminação e textura
Passos
Carregar uma textura
Configurar a classe BasicEffect
Adicionar coordenada de textura aos vértices
![Page 62: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/62.jpg)
62
Configurando a classe BasicEffect para utilizar textura
// Criação e configuração de luz …
basicEffect.TextureEnabled = true;
basicEffect.Texture = texture;
![Page 63: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/63.jpg)
63
Adicionando coordenada de textura
vertices[0].TextureCoordinate = new Vector2(0.0f, 0.0f);
vertices[1].TextureCoordinate = new Vector2(1.0f, 0.0f);
vertices[2].TextureCoordinate = new Vector2(0.0f, 1.0f);
vertices[3].TextureCoordinate = new Vector2(1.0f, 1.0f);
![Page 64: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/64.jpg)
64
Uma forma de tentar reduzir o número de vértices criados é através do uso de índices
Os índices são utilizados para endereçar vértices na criação de primitivas
Com isso um mesmo vértice pode ser usado várias vezes, apenas informando seu índice
Como o tamanho de cada índice é muito inferior ao tamanho de um vértice isso pode aumentar bastante o desempenho
![Page 65: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/65.jpg)
65
O método DrawUserPrimitives é ideal para desenhar um pequeno volume de dados dinâmicos
Toda vez que esse método é chamado todos os vértices e índices precisam ser transferidos para a GPU para serem processados e desenhados
Isso gera um grande trafego de dados e acarreta em baixo desempenho
Quando trabalhamos com grandes volumes de dados a melhor solução é utilizar Vertex e Index Buffers
![Page 66: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/66.jpg)
66
Tanto o VB quando o IB geralmente ficam armazenados na placa de video e proporcionam um alto desempenho
O VertexBuffer pode ser criado e preenchido com os vértices criados utilizando as classes VertexPositionColor, etc...
O IndexBuffer pode ser preenchido com inteiros de 16 ou 32 bits
Neste curso não abordaremos a criação desses buffers
É um processo simples, mas não é o foco do curso! =)
![Page 67: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/67.jpg)
67
O XNA já possui classes para armazenar e desenhar modelos 3D
A classe Model representa um modelo 3D
A classe ModelMesh representa uma malha do modelo
E a classe MeshPart representa uma parte da malha
Cada modelo é composto por várias malhasMalhas são geometrias que podem ser mover separadamente
Cada malha é composta de várias partesCada parte da malha é formada por geometrias que utilizam o mesmo material e podem ser desenhadas em lote
![Page 68: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/68.jpg)
68
Assim como carregamos texturas, sons e fonts também podemos carregar modelos 3D
Os formatos nativamente suportados são o .X (DirectXFile) e .FBX (Autodesk)
Os modelos devem ser adicionados ao projeto para serem processados pelo pipeline de conteudo
Para carregar os modelos basta utilizar o ContentManager
![Page 69: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/69.jpg)
69
Exercício 6 – Carregar e desenhar um modelo 3D
Passos
Carregar um modelo 3D
Configurar câmera
Desenhar o modelo
![Page 70: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/70.jpg)
70
Carregando modelo 3D
model = content.Load<Model>(@"p1_rocket");
Criando câmera em nova posição
Vector3 cameraPosition = new Vector3(10.0f, 10.0f, 10.0f);
Vector3 targetPosition = new Vector3(0.0f, 0.0f, 0.0f);
Vector3 upVector = new Vector3(0.0f, 1.0f, 0.0f);
cameraView = Matrix.CreateLookAt(cameraPosition, targetPosition, upVector);
![Page 71: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/71.jpg)
71
Desenhando o modelo
foreach (ModelMesh modelMesh in model.Meshes) {
foreach (BasicEffect effect in modelMesh.Effects) {
effect.World = Matrix.CreateScale(0.01f);
effect.View = cameraView;
effect.Projection = cameraProjection;
modelMesh.Draw();
}
}
![Page 72: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/72.jpg)
72
Junto com a malha do modelo também é exportado o efeito usado para renderização
Caso não tenha sido exportado nenhum efeito junto ao modelo o processador de modelos padrão irá criar um BasicEffect para o modelo
Quando o modelo é carregado todos os assets que o mesmo usa também são carregados
Texturas, efeitos e outros
![Page 73: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/73.jpg)
73
Exercício 6 – Criar um modelo 3D utilizando o 3D Studio Max, exportar o modelo e desenhar
OBS1: Tome cuidado com a escala do modelo
OBS2: Lembre de desenhar o modelo sobre o plano XZ, e com o eixo Y no centro do modelo
Passos
Criar um modelo no 3D Studio Max
Exportar o modelo utilizando Panda ou k-W Export
Carregar e desenhar o modelo
![Page 74: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/74.jpg)
74
Transformações são utilizadas para manipularmos geometrias
Mover, rotacionar, escalar, deformar, etc...
As transformações podem ser combinadas e são representadas por uma matriz
No XNA as transformações dos objetos podem ser especificadas no atributo World da classe BasicEffect
basicEffect.World = Matrix.CreateScale(0.01);
Todas as transformações podem ser criadas pela classe Matrix
![Page 75: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/75.jpg)
75
Translação
Move a posição do objeto
![Page 76: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/76.jpg)
76
Rotação
Rotaciona o objeto em torno de um eixo
Pode ser o eixo X, eixo Y, eixo Z ou um eixo arbitrário
![Page 77: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/77.jpg)
77
Escala
Aumenta o diminui o tamanho do objeto
![Page 78: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/78.jpg)
78
Para combinar as transformações basta multiplicar as matrizes
Note que a multiplicação de matrizes NÃO é comutativa, a ordem importa!!!
A ordem ideal para transformar um objeto é
T(F) = Escala * Rotação * Translação
A rotação pode ser feita nos eixos X, Y e Z, uma ordem para executar as rotações proposta por Euler é
Rotação = RotY * RotX * RotZ
![Page 79: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/79.jpg)
79
Transformações não são comutativas
![Page 80: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/80.jpg)
80
Exercício 7 – Mover o modelo carregado pelo teclado
Passos
Carregar um modelo 3D
Configurar câmera
Desenhar o modelo
![Page 81: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/81.jpg)
81
Mover o objeto pelo teclado
float elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds;
KeyboardState keyboardState = Keyboard.GetState();
if (keyboardState.IsKeyDown(Keys.Right))position.X += 10 * elapsedTime;
else if (keyboardState.IsKeyDown(Keys.Left))position.X -= 10 * elapsedTime;
…
Vector3 position é um atributo da classe utilizado para armazenar a posição do modelo
![Page 82: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/82.jpg)
82
Desenhando o objeto
effect.World = Matrix.CreateTranslation(position);
Para adicionar outras transformações basta concatenar tudo antes de atribuir ao World
effect.World = Matrix.CreateScale(scale) *Matrix.CreateRotationY(rotate.Y) * Matrix.CreateRotationX(rotate.X) * Matrix.CreateRotationZ(rotate.Z) * Matrix.CreateTranslation(position);
![Page 83: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/83.jpg)
83
Exercício 8 – Mover, rotacionar e escalar o modelo carregado pelo teclado
![Page 84: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/84.jpg)
84
Colisão
Axis Aligned Bounding Box
Bounding Sphere
Processador de modelos
Shaders
![Page 85: Bruno Pereira Evangelista · 7 Disponibiliza classes para reprodução de arquivos de sons (efeitos sonoros e músicas) Baseado no XACT (Microsoft Cross-Platform Audio8 Criando banco](https://reader035.fdocument.pub/reader035/viewer/2022080720/5f79fdc2708bf83b504fb371/html5/thumbnails/85.jpg)
85
Bruno P. [email protected]
Home Page
www.brunoevangelista.com
"De fato, que aproveitará ao homem ganhar o mundo inteiro mas perder sua alma?",
Matheus 16, 26