Novedades del Blog

martes, 21 de octubre de 2008

¡¡Por finnnn!!!!

Si señor, por fin he sido capaz de encontrar el problema, y todo por no fijarme bien. Pensando, pensando y pensando por fin he visto la luz al final del camino (nunca mejor dicho jeje ). Al depurar se me ha ocurrido que las normales de las mallas no estaban del todo bien.
Mi primer pensamiento es que la malla estuviera mal exportada, cosa que era un poco complicada ya que no creo que el 3D Max falle en eso.
Y mi segunda opción era que el VertexBuffer que contiene los vértices de la malla no tuviera la información de la normal y efectivamente ese era el problema.
La solución, muy fácil y venia en el tuto de riemers, lo había visto pero no lo tome en consideración, grabe error:

m_pMesh = m_pMesh.Clone(m_pMesh.Options.Value, CustomVertex.PositionNormalTextured.Format, pD3DDevice);
m_pMesh.ComputeNormals();


Pues eso, hago un clon de la malla diciéndole que el bufer de vértices almacene la posición, la normal y las coordenadas de textura y después calculo las Normales y ¡viola! así queda la cosa.



Como podéis ver en la captura, en la pared del fondo, en la parte derecha de Batman y en algunos sitios mas, se puede apreciar que esta la textura mas oscura, y por el contrario en la parte que afecta a la luz se ve mas brillante. En esta captura, la luz se encuentra justo en las coordenadas de la cámara.

¡¡Dios!! que sensacion mas buena cuando te salen las cosas jejejeje :) y ahora a la cama que ya es hora y en seis horas otra vez en pie.

3 comentarios:

  1. De qué tipo son las luces que esta usando usted?
    Gracias de antebrasho.

    ResponderEliminar
  2. Para que sirven las normales de un vértice? ya que veo que lo mencionas pero no entiendo exactamente para que funcionan.

    Gracias!

    ResponderEliminar
  3. A ver respondo a los dos jejeje:
    1. El tipo de luz es Light Point, vamos un punto de luz que alumbra en todas las direcciones, como el sol.

    2. La normal es un vector perpendicular a un plano dado, y nos sirve para saber el angulo de reflexion de la luz respecto de ese plano. Es decir, si la luz incide mas o menos en ese plano.

    Saludos.

    ResponderEliminar