Új hozzászólás Aktív témák

  • andriscs

    aktív tag

    Hi!

    Éppen azzal foglalatoskodom, hogy egy DirectX-es alkalamzást írjak, és szeretnék DirectX file-okat beolvasni (*.x). A beolvasással nincs gond, de az összes mesh felülete fekete, hiába van fényforrás a világban. Mesh beolvasása esetén nekem kell megírni az egyes subset-ekre a fénybeállításokat? Esetleg a modell tervezésénél kell megfelelő világítást használni? A modelleket Maya-val csinálom és onnan exportálom DirectX file-okká.
    Itt egy tipikus Mesh loader, ebben nem látok olyat, hogy a fényforrásokat ráigazítaná:

    public static Mesh LoadMesh(Device device, string file, ref Material[] meshMaterials,
    ref Texture[] meshTextures)
    {
    ExtendedMaterial[] mtrl;
    // Load our mesh
    Mesh tempMesh = Mesh.FromFile(file, MeshFlags.Managed, device, out mtrl);
    // If we have any materials, store them
    if ((mtrl != null) && (mtrl.Length > 0))
    {
    meshMaterials = new Material[mtrl.Length];
    meshTextures = new Texture[mtrl.Length];
    // Store each material and texture
    for (int i = 0; i < mtrl.Length; i++)
    {
    meshMaterials = mtrl.Material3D;
    if ((mtrl.TextureFilename != null) && (mtrl.TextureFilename !=
    string.Empty))
    {
    // We have a texture, try to load it
    meshTextures = TextureLoader.FromFile(device, @''..\..\'' +
    mtrl
    .TextureFilename);
    }
    }
    }
    return tempMesh;
    }


    Aztán a kirajzolás:

    private void Draw(float x, float y, float z)
    {
    device.Transform.World = Matrix.Translation(x, y, z);
    for (int i = 0; i < meshMaterials.Length; i++)
    {
    device.Material = meshMaterials;
    device.SetTexture(0, meshTextures
    );
    meshMesh.DrawSubset(i);
    }
    }


    Örülnék a hasznos ötleteknek. :)

    [Szerkesztve]

    Andris - http://andriscs.blogspot.com

Új hozzászólás Aktív témák