XNA 4: проблема с импортом FBX - PullRequest
2 голосов
/ 05 мая 2011

У меня проблема с импортом 3D-модели из файла FBX.

Исходная модель содержит 575 объектов + 1 камеру и выглядит следующим образом: http://habreffect.ru/files/23d/542fa7f67/source_model.png

В XNA, подготовленном с моделью конвейера контентасодержит 82 меша и 576 костей.Поэтому, когда я рисую свою модель, я вижу только часть исходной модели.Изображение результата выглядит следующим образом: http://habreffect.ru/files/28a/6e61c0215/Result_view.png

Мой код рисования:

GraphicsDevice.Clear(Color.CornflowerBlue);

Matrix[] transforms = new Matrix[_model.Bones.Count];
_model.CopyAbsoluteBoneTransformsTo(transforms);

foreach (var mesh in _model.Meshes)
{
    foreach (BasicEffect effect in mesh.Effects)
    {
        effect.LightingEnabled = true;
        effect.EnableDefaultLighting();
        effect.World = transforms[mesh.ParentBone.Index] * _world;
        effect.View = _view;
        effect.Projection = _proj;
    }
    mesh.Draw();
}
base.Draw(gameTime);

Как получить все 575 мешей в моем экземпляре модели в XNA?

Спасибо!

UPD : Я попытался импортировать мою модель FBX в 3ds max, выбрать все сетки и использовать «Экспорт выбранных».Результат FBX файл в 11 раз больше.Затем я добавляю его как контент в проект XNA, загруженная модель содержит все 575 мешей, и он отображается правильно.

К сожалению, этот метод ручного преобразования мне не подходит - мне нужно сделатьразличные модели fbx из изменяемого репозитория.

Итак, какой файл FBX "хорош" для процессора содержимого XNA (я использую XNA 4)?

Ответы [ 3 ]

2 голосов
/ 11 мая 2011

Итак, на MSDN я обнаружил, что FbxImporter предназначен для работы с версией 2006 года формата FBX.

Недавно Autodesk выпустил FBX Converter 2012.1 , который содержит другие инструменты, как FBX Eplorer, FBX Viewer.

Исследователь FBX может показывать структуру файла FBX, и я сравниваю экспортированный из файла 3D MAX и исходный файл FBX.У них другой внутренний формат.Я попытался сделать следующее преобразование: FBX -> Collada -> FBX, и файл результата FBX содержит аналог экспортируемой из структуры данных MAX.

Итак, я просто добавляю результат FBX в содержимое моего приложения XNA,и он хорошо отрисован:)

Еще один способ заставить его работать - это использовать Autodesk FBX SDK для ручного чтения модели и нарисовать ее в XNA.

Заключение :

  1. Корректная работа XNA FbxImporter не зависит от версии (2006, 2011 и т. Д.) И формы (двоичного, ascii) файла FBX.Внутренняя структура данных FBX гораздо важнее.
  2. Чтобы сделать FBX «читабельным» для XNA Importer, вы можете использовать двойное преобразование, например, FBX -> Collada -> FBX
  3. Вы также можете использовать FBX SDK для ручногозагрузить данные из FBX
0 голосов
/ 10 ноября 2012

Вы используете инстансинг в 3DS MAX. Это не поддерживается напрямую XNA. Вы должны нарисовать сетку для каждого экземпляра кости самостоятельно. В идеале вместо этого вы должны использовать экземпляр DirectX для рисования каждой сетки один раз на кость за один вызов Draw (). Но для этого нужно свернуть свой собственный код, преобразовав кости в вершины экземпляра. По умолчанию XNA поддерживает только самые основные операции.

0 голосов
/ 08 августа 2012

Откройте 3d модель в последней версии 3dx max 2012 и экспортируйте ее в формате .fbx. .fbx загружен правильно с загрузчиком модели xna. При экспорте вы даже можете встраивать ресурсы, поэтому вам не нужно добавлять текстуры к нему через XNA.

...