exportar texturas modelos 3d y texturas de blender a xna 4.0

Así que estoy tratando de hacer un juego en 3D con sprites en 2D. En blender creé un avión y usé mapas uv para mapear uno de los sprites al avión. Cuando presiono f12 y renderizo el plano, se muestra el sprite.

Me aseguré de crear un material para el avión y me aseguré de agregar la textura, así como habilitar el mapeo uv con el mapa uv correcto.

Exporté el modelo de archivo como archivo .fbx y lo puse junto con la imagen de textura en la carpeta de contenido de mi proyecto.

Sin embargo, cuando renderizo mi modelo en lugar de mostrar la textura, el plano es negro sólido.

¿Qué podría estar causando esto? Mi dibujo se ve así:

public void Draw(Matrix View, Matrix Projection)
{
    // Calculate the base transformation by combining
    // translation, rotation, and scaling
    Matrix baseWorld = Matrix.CreateScale(Scale)
    * Matrix.CreateFromYawPitchRoll(
    Rotation.Y, Rotation.X, Rotation.Z)
    * Matrix.CreateTranslation(Position);

    foreach (ModelMesh mesh in Model.Meshes)
    {
        Matrix localWorld = modelTransforms[mesh.ParentBone.Index]
        * baseWorld;
        foreach (ModelMeshPart meshPart in mesh.MeshParts)
        {
            BasicEffect effect = (BasicEffect)meshPart.Effect;

            effect.World = localWorld;
            effect.View = View;
            effect.Projection = Projection;
            effect.EnableDefaultLighting();
        }
        mesh.Draw();
    }
}

preguntado el 12 de junio de 12 a las 13:06

1 Respuestas

Me lo imaginé. La razón por la que mi textura no se muestra en mi modelo es porque no estoy configurando effect.world correctamente

Cambié la forma en que configuré la matriz mundial y edité parte del código de mi clase modelo. En caso de que alguien más quiera renderizar modelos texturizados con una buena clase

public class CModel
{
    public Matrix Position { get; set; }
    public Vector3 Rotation { get; set; }
    public Vector3 Scale { get; set; }
    public Model Model { get; private set; }
    private Matrix[] modelTransforms;




  public CModel(Model Model, Vector3 Position)
  {
    this.Model = Model;
    modelTransforms = new Matrix[Model.Bones.Count];
    Model.CopyAbsoluteBoneTransformsTo(modelTransforms);
    this.Position = Matrix.CreateTranslation(Position);

  }

  public void Draw(Matrix viewMatrix, Matrix proMatrix)
  {

    foreach (ModelMesh mesh in Model.Meshes)
    {
        foreach (BasicEffect effect in mesh.Effects)
        {
            effect.EnableDefaultLighting();

            effect.View = viewMatrix;
            effect.Projection = proMatrix;
            effect.World = modelTransforms[mesh.ParentBone.Index] * Position;
        }

        mesh.Draw();
    }
  }

Dibuja el modelo en la posición especificada. Si desea otros efectos, puede agregarlos fácilmente al sorteo.

Respondido el 08 de diciembre de 14 a las 21:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.