Como: Mover e destino da câmera
Você pode mover e de destino a câmera em uma cena Direct3D usando transformações de modo de exibição.
Observação: |
---|
Aplicativos móveis de Direct3D gerenciado requerem software Windows Mobile versão 5.0 para Pocket PCs e Smartphones .Consulte Recursos externos para o .NET Compact Framework Para obter informações sobre o software Windows Mobile e SDKs. |
As transformações do modo de exibição traduzem Direct3D objetos de espaço do mundo para espaço na tela.Quando você executa uma transformação de modo de exibição, o reconhecimento da posição de câmera (ou visualizador), o destino da câmera e o sistema de coordenada permite que você manipule o resultado na tela e garante que suas coordenada de espaço de mundo são transformadas corretamente em espaço de coordenada da tela.
Espaço mundial baseia-se em um sistema de coordenada da mão esquerda, no qual valores do eixo y positivo movem para cima, positivo valores do eixo x movem para a direita e movem valores do eixo z positivo longe um visualizador hipotético.Por outro lado, em um sistema de coordenada destro, os valores do eixo z positivo movem na direção do visualizador.
Transform propriedade para retornar uma Matrix estrutura que descreve um estado de transformação. Para mover e de destino da câmera, passe uma matriz de transformação de modo de exibição para o objeto de dispositivo usando o LookAtLH método para manipular a transformação.
No exemplo a seguir, a câmera inicialmente começa por trás da cena em um ponto positivo do eixo z e tem como alvo um ponto próximo à origem.Porque a câmera está localizada por trás da cena, valores do eixo z positivo colocar objetos mais perto da câmera em vez de mais distante.Além disso, valores do eixo x positivo colocar objetos mais à esquerda em vez de à direita.
Exemplo
O exemplo de código a seguir mostra uma transformação de modo de exibição para um aplicativo que será animada de uma malha caixa primitivo que representa uma remessa.Para obter o código de exemplo completo, consulte Como: Transformar objetos Direct3D.
Este exemplo de código tem vários objetos, incluindo o seguinte:
' Set up the view matrix. You can define a view matrix with a camera position,
' a point to look at (camera target), and an "up" direction.
' First vector passed to LookAtLH is the camera position.
' Second vector passed to LookAtLH is the camera target.
' Third vector passed to LookAtLH defines the "up" direction.
' In this example, you set the camera seven units up along the z-axis ("behind"
' the scene), down one unit, and left two units. You then point the camera
' just above the origin and define "up" to be in the y-direction.
If Not isShipDeparted Then
device.Transform.View = Matrix.LookAtLH(New Vector3(- 2, - 1, 7), New Vector3(0, 1, 0), New Vector3(0, 1, 0))
Else
' Handles movement of camera after
' the ship "fires" the main engines.
device.Transform.View = Matrix.LookAtLH(New Vector3(xCameraPosition, yCameraPosition, 7), New Vector3(0, 1, 0), New Vector3(0, 1, 0))
xCameraPosition += 0.01F
yCameraPosition += 0.01F
End If
// Set up the view matrix. You can define a view matrix with a camera position,
// a point to look at (camera target), and an "up" direction.
// First vector passed to LookAtLH is the camera position.
// Second vector passed to LookAtLH is the camera target.
// Third vector passed to LookAtLH defines the "up" direction.
// Here, you set the camera seven units up along the z-axis ("behind"
// the scene), down one unit, and left two units. You then point the camera
// just above the origin and define "up" to be in the y-direction.
if (!isShipDeparted)
{
device.Transform.View = Matrix.LookAtLH(new Vector3(-2, -1, 7),
new Vector3(0, 1, 0), new Vector3(0, 1, 0));
}
else
{
// Handles movement of camera after
// the ship "fires" the main engines.
device.Transform.View = Matrix.LookAtLH(new Vector3(xCameraPosition,
yCameraPosition, 7), new Vector3(0, 1, 0), new Vector3(0, 1, 0));
xCameraPosition += 0.01f;
yCameraPosition += 0.01f;
}
Compilando o código
Este exemplo requer o código de exemplo completo Como: Transformar objetos Direct3D.
Consulte também
Conceitos
Tópicos "como" do .NET compact estrutura