XNA не загружает текстуры моделей автоматически - PullRequest
0 голосов
/ 17 ноября 2010

У меня здесь очень похожий на n00b вопрос ... У меня есть маленькая игра XNA, в которой я пытался импортировать 3D-модель, уже созданную и предоставленную Microsoft.Проблема в том, что XNA не загружает текстуры, связанные с этой моделью, даже если он гарантирует, что связанные с моделью присутствуют в каталоге проекта (компилятор выдает ошибку, если не может найти эти текстуры), ..в основном я просто вижу большую глиняную модель: P ..

На этой фотографии показан результат, который я получаю:

http://img217.imageshack.us/img217/8873/wronge.png

Вот как это должно быть:

http://img508.imageshack.us/img508/5971/correct.png

Есть что-нибудь, что я здесь упускаю?Разве XNA не должна автоматически применять все текстуры, связанные с конкретной моделью?

Ответы [ 2 ]

1 голос
/ 17 ноября 2010

Когда вы визуализируете свою модель dude.fbx, убедитесь, что в цикле для рисования модели у вас есть что-то вроде следующего:

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

Это не в моей головевызовы методов могут быть неверными.

0 голосов
/ 26 августа 2014

Xna не загружает автоматически текстуры для модели. Исключение, которое вы получаете, когда текстуры нет, генерируется компилятором ресурсов Xna и не связано с фактическим импортом чего-либо.

Чтобы решить эту проблему, загрузите текстуру вручную в LoadContent() или в любом другом месте, где у вас есть ContentManager, используя:

modelTexture = Content.Load<Texture2D>("mytexture");

и затем добавьте текстуру в качестве параметра, если у вас есть пользовательский эффект, или поместите его в свойство Texture в экземпляре BasicEffect при его рисовании:

foreach (ModelMesh mesh in model.Meshes)
{
    foreach (BasicEffect eff in mesh.Effects)
    {
        eff.TextureEnabled = true;
        eff.Texture = modelTexture;
    }
    mesh.Draw();
}

(хотя рисовать, очевидно, не следует в LoadContent())

Обратите внимание на eff.TextureEnabled = true;, который требуется для активации текстур при использовании BasicEffect.

...