jueves, 4 de julio de 2013

6 .-. Texturizar. (II)

Bien. En el anterior post teníamos el problema de que veíamos las escena "del revés" es decir, lo que debería de ser la parte Y+ se veía en Y- y esto es debido a la característica de Left Hand de los sistemas de coordenadas que estamos empleando. ¿Qué hago?¿Qué ocurre?

No pasa nada. Simplemente tenemos que invertir lo que vemos haciendo que el "Mundo" rote completamente a través del eje X la mitad de una vuelta. ¿Eh?
Sencillo, vamos la clase Motor al Sub que controla nuestras matrices que tiene este aspecto:

    Public Sub Control_Matrices(ByRef VC As Vector3, ByRef DP3 As Direct3D.Device)

        Try
            Matriz_Vista = Matrix.LookAtLH(VC, New Vector3(0, 0, 0), New Vector3(0, 1, 0))
            DP3.Transform.View = Matriz_Vista

            Matriz_Proyeccion = Matrix.PerspectiveFovLH(FOV, Ratio, Z_Cerca, Z_Lejos)
            DP3.Transform.Projection = Matriz_Proyeccion

        Catch ex As Exception

        End Try

    End Sub

 Si os fijáis en la parte de arriba de Motor hemos declarado las matrices de Vista, Proyección y Mundo, pero la de mundo no la estamos empleando, pues bien, vamos a emplearla para hacer que todo el 3D rote 180 grados sobre el eje X.

    Public Sub Control_Matrices(ByRef VC As Vector3, ByRef DP3 As Direct3D.Device)

        Try
            Matriz_Mundo = Matrix.Identity * Matrix.RotationX(Math.PI)
            DP3.Transform.World = Matriz_Mundo

            Matriz_Vista = Matrix.LookAtLH(VC, New Vector3(0, 0, 0), New Vector3(0, 1, 0))
            DP3.Transform.View = Matriz_Vista

            Matriz_Proyeccion = Matrix.PerspectiveFovLH(FOV, Ratio, Z_Cerca, Z_Lejos)
            DP3.Transform.Projection = Matriz_Proyeccion

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

    End Sub

Lo que hacemos es inicializar la matriz mundo a la identidad y aplicarle una rotación de PI radianes en el eje X mediante RotationX. Si ahora probáis vereis que ya funciona bien y que las Y son correctas.

No hay comentarios:

Publicar un comentario