Compartilhar via


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:

  • Um primitivo Mesh objeto que representa uma remessa.

  • A Device objeto.

' 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

Outros recursos

Programação Direct3D móvel no .NET Compact estrutura