Навигация
· XNA FAQ
· С чего начать
· Конкурсы
· Обратная связь
· XNA Блоги
Сейчас на сайте
· Гостей: 1

· Пользователей: 0

· Всего пользователей: 3,684
· Новый пользователь: headron
Последние фото
Эх, чуть не проспал закрытие.
Эх, чуть не проспал ...
Альбом: XNA Engine

GB
GB
Альбом: XNA Engine

South Park Coon & Friends
South Park Coon & Fr...
Альбом: XNA Games

Блоги
yavshoke
» XboxOne - интерес...
dampirik
» Push уведомления ...
dampirik
» Реклама,статистик...
Chort
» XNA и StartCoroutine
Chort
» Curve Class
dampirik
» Реклама, статисти...
dampirik
» Увеличение скорос...
dampirik
» Реклама, статисти...
general
» Распаковка DxtCom...
general
» Как работать с XN...
Поддержка
microsoft.com
1gb.ru - Дом для вашего сайта
Статистика посещений:

Просмотр темы
 Распечатать тему
Проблема с импортом FBX
Vitus
#1 Распечатать сообщение
Опубликовано 05.05.2011 21:00:09
Аватар пользователя

Младший специалист


Сообщений: 10
Зарегистрирован: 05.05.11

Всем привет!

Наблюдаю странную проблему при импорте 3D модели из FBX файла - модель получается неполная, отрисовывается только её часть.

Подробнее:
Исходная модель - файл в формате FBX, в нём 575 объектов и 1 камера. Выглядит она примерно так:
habreffect.ru/files/23d/542fa7f67/source_model.png
На стороне XNA полученная в результате вызова Load() модель содержит 82 Meshes и 576 Bones. При этом отрисовывается так:
habreffect.ru/files/28a/6e61c0215/Result_view.png

Код метода отрисовки:
Загрузить источник  GeSHi: C#
  1. GraphicsDevice.Clear(Color.CornflowerBlue);
  2.  
  3. Matrix[] transforms = new Matrix[_model.Bones.Count];
  4. _model.CopyAbsoluteBoneTransformsTo(transforms);
  5.  
  6. foreach (var mesh in _model.Meshes)
  7. {
  8. foreach (BasicEffect effect in mesh.Effects)
  9. {
  10. effect.LightingEnabled = true;
  11. effect.EnableDefaultLighting();
  12. effect.World = transforms[mesh.ParentBone.Index] * _world;
  13. effect.View = _view;
  14. effect.Projection = _proj;
  15. }
  16.  
  17. mesh.Draw();
  18. }
  19. base.Draw(gameTime);
Добавлено за 0.006 секунд, используя GeSHi 1.0.8.2


Версия XNA 4, Game Profile - Reach

Подскажите пожалуйста, в чем проблема? Как мне получить корректно отрисовываемую модель, как на 1-м рисунке?

Спасибо!
 
WitalijKaa
#2 Распечатать сообщение
Опубликовано 05.05.2011 21:27:19
Аватар пользователя

Специалист


Сообщений: 178
Зарегистрирован: 28.02.11

раз 82 меша значит экспортируешь в fbx неправильно...

хотя 575 объектов в одном fbx это по моему сумасшествие. зачем такое чудить???

если ты не собираешься двигать комнаты, то сделай их одной моделью, у тебя будет одна меша, и рисоваться она будет быстрее, не нужно 500 матриц костей пересчитывать все время.

а если хочешь двигать комнаты, то загружай их по отдельности. то есть каждая комната должна быть отдельной моделькой. так и управлять ими будет проще.

а модель с кучей костей делается именно для анимированных моделей. например у меня пирамида вокруг которой летают камни, там есть корневая кость, кость на пирамиду и кость на каждый из летающих камней. это осмысленно.

объясни что это за модель? это комнаты? я правильно понял?
создайте еще более понятный интерфейс и мир создаст еще более тупого юзера
 
Vitus
#3 Распечатать сообщение
Опубликовано 05.05.2011 21:50:03
Аватар пользователя

Младший специалист


Сообщений: 10
Зарегистрирован: 05.05.11

Ситуация такая - есть репозиторий моделей, они хранятся в формате FBX.
В репозитории они появляются в результате экспорта из Autodesk Revit.

Моя задача простая - отобразить модель, сделать возможность поворота и zoom, без всяких анимаций.
На маленьких моделях всё ок - модель рендерится правильно.
А вот на большой модели возникли описанные косячки. Эта модель - собранный из панелей этаж жилого дома.

Про 575 объектов - это я взял из 3D MAX, вот из этого окна:
http://habreffect...y_info.png

Согласен, что рисовать 575 отдельных объектов глуповато в данной ситуации. Но поскольку данные в репозитории будут меняться, нужно обойтись без преобразования вручную.

Раз в 3D MAX модель импортится корректно, значит с самим FBX всё ок.
Раз в модели 82 меша, а костей 576, получается что часть мешей не попала в модель в XNA. Поэтому я и подумал про косяк при импорте.

Неужели в XNA есть ограничения на размер импортируемых моделей?
 
general
#4 Распечатать сообщение
Опубликовано 05.05.2011 21:55:28
Аватар пользователя

Администратор сайта


Сообщений: 3788
Зарегистрирован: 10.02.09

причин может быть масса. так сразу и не скажешь.

первое что стоит проверить это поиграть с параметрами:
GraphicsDevice.RasterizerState.CullMode = CullMode.None;
GraphicsDevice.RasterizerState.FillMode = FillMode.WireFrame;

- возможно ты не правильно приводишь кости
- возможно при создании модели нарушен порядок обхода треугольников (отражением частей сетки)
- возможно путаница с материалами
- ...
[dreamteam-mobile]
[dtimofeev.blogspot.com][c#][XNA][blog]
 
WitalijKaa
#5 Распечатать сообщение
Опубликовано 05.05.2011 22:22:12
Аватар пользователя

Специалист


Сообщений: 178
Зарегистрирован: 28.02.11

Vitus написал:
Неужели в XNA есть ограничения на размер импортируемых моделей?


не знаю, но мне кажется что больше стоит бояться именно экпортера. я например экспортирую 9м 3дМаксом в fbx и у меня все работает только если выделить нужные объекты и нажать export selected. если просто export (типа всю сцену) то получается полный маразм с подчиненным объектами. хотя если импортировать обратно в Макс что тот вариант что тот один хрен разницы никакой.

причин действительно может быть много почему у тебя все это не работает. я тебе описал то с чем сам сталкивался при экспорте. не работал с Autodesk Revit но я бы перво-наперво заподозрил что там нужно тоже ескпортировать селектед, ведь это тоже аутодеск.
создайте еще более понятный интерфейс и мир создаст еще более тупого юзера
 
mike
#6 Распечатать сообщение
Опубликовано 06.05.2011 00:11:26
Аватар пользователя

Администратор сайта


Сообщений: 739
Зарегистрирован: 10.02.09

не помню точно сколько, но такое количестко костей это привет. Эсли скелетная анимация (позиционирование) расчитывается на GPU то на 2-ой модели шейдеров у нас есть ограничение = 256. Это число регистров, каждый из которых есть вектор. т.е. в шейдер мы не можем передать больше чем 256/4=64 костей, а ведь есть еще другие параметры, типа освещения.
 
stih
#7 Распечатать сообщение
Опубликовано 06.05.2011 03:58:39
Новичок


Сообщений: 2
Зарегистрирован: 30.03.11

Я где-то читал, что в BasicEffect есть свои ограничения, если не ошибаюсь. Наверное дело в этом, а не в экспорте. Попробуй разделить все обьекты по 82 объектов, или написать свой Effect.
 
Vitus
#8 Распечатать сообщение
Опубликовано 06.05.2011 08:45:21
Аватар пользователя

Младший специалист


Сообщений: 10
Зарегистрирован: 05.05.11

Всем спасибо за ответы!

Похоже, дело и правда в экспорте. По совету WitalijKaa попробовал export selected из 3dmax, получил файл размером 110 Мбайт (против 10 Мб исходного FBX). И модель уже оттуда отрисовывается в XNA корректно.

Да, и ещё попробовал поменять параметры RasterizerState - в результате рисуется та же "обрезанная" модель.

Значит, дело в самом "формате" FBX - видимо, исходный формат content processor не понимает.

FBX бывает нескольких версий. Есть ли какие-то явные ограничения на импорт в XNA (условно, файлы версии 7 импортятся криво, версии 6 - грамотно)?
 
AngelTMB38
#9 Распечатать сообщение
Опубликовано 06.05.2011 08:55:36
Специалист


Сообщений: 178
Зарегистрирован: 01.06.10

Поставь FBX 2009 и не мучайся, при условии что у тебя установлена среда xna не старше версии 3.1Wink
 
Vitus
#10 Распечатать сообщение
Опубликовано 06.05.2011 11:13:03
Аватар пользователя

Младший специалист


Сообщений: 10
Зарегистрирован: 05.05.11

Попробовал установить XNA 3.1, добавить FBX 2009 файлы, однако при сборке получаю AccessViolationException. ОС - Windows 7 x64. Пока не понял, как такое исправить.

И, кстати, нашёл, на какой формат рассчитан XNA 4 Importer:
... This importer is designed to work with assets exported with the 2006.11 version of the FBX exporter.

Найдено в MSDN: http://msdn.micro...o.40).aspx

Видимо, 3ds max по умолчанию использует этот формат, потому и импорт в XNA проходит корректно.
Изменил(а) Vitus, 06.05.2011 11:13:34
 
WitalijKaa
#11 Распечатать сообщение
Опубликовано 06.05.2011 12:25:24
Аватар пользователя

Специалист


Сообщений: 178
Зарегистрирован: 28.02.11

Vitus написал:
Видимо, 3ds max по умолчанию использует этот формат, потому и импорт в XNA проходит корректно.


в моей 9й версии 3дМакса можно выбирать версию fbx при экпорте, самое старшее что я могу выставить FBX200608 (оно же по умолчанию)

сенкс тебе, я терь не побоюсь настраивать эту опцию если допустим перейду на 11ю версию Макса

дык может в твоем Ревите это тоже настраивается??? просто сам Ревит не такой древний как мой Макс потому там по умолчанию стоит что-то старше???
создайте еще более понятный интерфейс и мир создаст еще более тупого юзера
 
Vitus
#12 Распечатать сообщение
Опубликовано 10.05.2011 12:56:20
Аватар пользователя

Младший специалист


Сообщений: 10
Зарегистрирован: 05.05.11

Удалось выяснить, что корректность импорта FBX в XNA не зависит ни от версии файла, ни от его типа (binary, ascii).

Удалось выяснить с помощью новой версии FBX Converter 2012.1. В её состав входит утилита FBX Explorer, отображающая структуру файла в виде дерева.

Для исходного файла имеем в секции Definitions 1355 определений: 576 - Models
1 - Global Settings
1 - NodeAttribute
30 - Object
82 - Geometries
665 - ObjectMetadata
В XNA я как раз имею 82 элемента в коллекции Meshes, XNA импортер некорректно обрабатывает такой файл, и это как-то связано с секцией Geometries

Для экспорченного из 3d max файла имеем в секции Definitions 1153 определений:
576 - Models
575 - Materials
1 - SceneInfo
1 -GlobalSettings
Этот файл импортится в XNA корректно

Попробовал с помощью FBX Converter преобразовать эскпорченный из 3d max файл в 2006.11, 2012 binary & ascii форматы - XNA во всех случаях импортил модель корректно.

Вывод такой: XNA может корректно импортировать только определённый файлы. Какие именно - зависит не от их версии или формата, а от внутренней структуры.

Однако, вопрос, как не прибегая к помощи 3d max сделать исходный файл "понятным" для XNA, остаётся открытым!
 
Chort
#13 Распечатать сообщение
Опубликовано 10.05.2011 19:36:37
Аватар пользователя

Администратор


Сообщений: 1296
Зарегистрирован: 16.02.09

С 3D форматами, и форматами вообще надо помнить следующие - если FBX что то поддерживает, то это не значит что это поддерживает XNA. FBX Importer XNA импортирует геометрию настолько хорошо насколько может, но некоторые "фичи" формата могут быть просто несовместимы с структурой 3D моделей XNA.
На вопросы отвечаю с головы. Ссылка на ответы или запускаю студию только в интересных случаях.
 
Vitus
#14 Распечатать сообщение
Опубликовано 11.05.2011 05:45:55
Аватар пользователя

Младший специалист


Сообщений: 10
Зарегистрирован: 05.05.11

Да, насчёт форматов я уже осознал.

Вчера подумал - мне нужны только меши, и нужно представить их в понятном для XNA виде. Решил попробовать преобразование FBX -> Collada -> FBX (при помощи Autodesk FBX Converter). Получилось! XNA понимает результирующий файл. Способ, прямо скажем, не самый "чистый", однако рабочий, и может быть выполнен без участия человека, что и требуется.

Альтернатива - использование FBX SDK для извлечения данных

Всем спасибо за участие!
 
Перейти на форум:
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

27.08.2014
Я умею немного на asp.net + html и css

22.08.2014
на ASP mvc 3 есть пару проектов. Могу помочь, если нужно. Обидно, если закроется Frown

21.08.2014
я тоже ноль

21.08.2014
Я в вебе только с php занимался да и то на уровне чтоб работало.

21.08.2014
Я в вебе полный ноль…

21.08.2014
Переводить его надо, хоть на ту же азуру. И двиг менять на что-то современное. Если есть веб-разрабы - можем скооперироваться. Один делать не буду.

21.08.2014
не знаю всех нюансов по оплате и все хорошее когда нибудь заканчивается

21.08.2014
А что случилось?

21.08.2014
похоже сайт будет работать до 28го числа

09.08.2014
Апи пока не видел. Но есть приложение в магазине Live Lock Screen BETA, так что думаю скоро будет

08.08.2014
Я про API для Update1. На нем работает это

08.08.2014
А что именно нужно? Чтото и сейчас открыто http://msdn.micro.
...105).aspx

06.08.2014
Кто-нибудь слышал об открытии доступа к Lock Screen Api?

31.07.2014
VPDExpress на базе MVS 2012, ни в какую не ловит исключения. Даже если их сам создаешь. И всех так?

25.07.2014
С днем системного администратора причастных к этой профессии! По случаю - тортик от жены

RSS каналы сайта
XNA - Новости
XNA - Статьи
XNA - Форум
XNA - Галерея
XNA - Файлы
Время загрузки: 0,17 секунд 8,709,539 уникальных посетителей