Bien vamos allá con el renderizado de la malla. Repasemos algunos conceptos. Tenemos un fichero X que guarda el diseño de un coche que, supongamos, hemos hecho con Blender. Nuestro código carga el fichero X en un objeto de tipo Mesh al que acompañan colecciones de Materiales y Texturas.
Ahora vamos a renderizar nuestro coche a ver qué pasa. Lo primero será crear en Motor una rutina que dibuje la malla.
Private Sub DibujaMalla(ByRef DP3 As Direct3D.Device, ByRef Mundo As Matrix, ByRef Mesh As Mesh, ByRef contador As Int32, ByRef Mat() As Material, ByRef Tex() As Texture)
Try
DP3.Transform.World = Mundo
With Mesh
For X = 0 To contador - 1
DP3.Material = Mat(X)
DP3.SetTexture(0, Tex(X))
Mesh.DrawSubset(X)
Next X
End With
Catch ex As Exception
End Try
End Sub
Try
DP3.Transform.World = Mundo
With Mesh
For X = 0 To contador - 1
DP3.Material = Mat(X)
DP3.SetTexture(0, Tex(X))
Mesh.DrawSubset(X)
Next X
End With
Catch ex As Exception
End Try
End Sub
La explicación es sencilla. Queremos dibujar en un lugar concreto nuestra mesh. Pues pasamos toda la información relacionada con la mesh más el lugar donde queremos dibujar (Mundo). Lo que hace la matriz básicamente es mover el renderizador a la posición indicada por Mundo, recorrer todos los SubSets de la malla (ya veremos lo que son) y dibujarlo todo.
Ahora nos vamos a Render, dentro de Motor y añadimos estas líneas. He incluido el final completo de Render para que veais por donde iría.
'Coche
Matriz_Mundo = Matrix.Identity * Matrix.Translation(0, 0, 0)
Me.DibujaMalla(DP3, Matriz_Mundo, CocheMesh, CocheContadorMateriales, CocheMaterials, CocheTextures)
Me.PintaHud()
DP3.EndScene()
DP3.Present()
MAtrix.Traslation(0,0,0) mueve el renderizador a esa posición, si quereis el coche en otra posición teneis que tocar esa línea.
F5 y a probar.
No hay comentarios:
Publicar un comentario