Войти
ПрограммированиеФорумГрафика

Lightweight FBX loader

#0
13:44, 3 июля 2019

Всем привет! Ищу легковесный fbx-загрузчик с открытым исходным кодом и лицензией по типу zlib или MIT. На С/С++. Чтобы умел скелетку и статику считывать. Пока что я нашел OpenFBX https://github.com/nem0/OpenFBX/tree/master/src

PS: не assimp, не fbxsdk.


#1
14:06, 3 июля 2019

0xc0de
А что не так с fbxsdk?

#2
(Правка: 14:17) 14:12, 3 июля 2019

0xc0de
Велосипед - https://github.com/mrDIMAS/DmitrysEngine/tree/master/fbx
Работает довольно стабильно, но естественно его просто так не получится взять и воткнуть в свой проект - придется перепиливать конвертер FBX DOM -> Движковое_представление.

Хотя OpenFBX выглядит норм так.

#3
13:00, 4 июля 2019

BingoBongo
> А что не так с fbxsdk?
Не opensource, лицензия мутная, нельзя распространять вместе со своим продуктом.

mr.DIMAS
Спасибо, посмотрю оба.

#4
13:04, 4 июля 2019

0xc0de
А что не так с assimp?

#5
13:36, 4 июля 2019

FBX коммерческий формат. Лучше смотреть в сторону Collada. Он полностью бесплатен.

#6
15:10, 4 июля 2019

eDmk
> FBX коммерческий формат. Лучше смотреть в сторону Collada. Он полностью бесплатен.
FBX лучше всего использовать как переходный формат. У меня сейчас пока только статичные модели, я их сохраняю в OBJ и конвертирую в VBO.
Потом перейду на FBX и FBX SDK, но буду использовать его только в конвертере, а на выходе уже будет своё.

#7
15:17, 4 июля 2019

DODge
> А что не так с assimp?

Слишком громоздкий. Много лишнего мусора. Да и не нравится, как написан.

#8
15:22, 4 июля 2019

0xc0de
> Да и не нравится, как написан
напиши лучше

#9
15:30, 4 июля 2019

Misanthrope
> напиши лучше

Так и сделаю, если не устроят другие варианты.

#10
(Правка: 15:38) 15:31, 4 июля 2019

Daniil Petrov
> FBX лучше всего использовать как переходный формат.
согласен. а с ним кроме FBX SDK ничего стабильно не работает. у FBX куча вариаций + еще вариации создания файла самой программой, ибо это конетйнер по сути а не жесткий формат. я встречал случаи когда файлы сохраненные в FBX в одинаковой версии от разных программ, внутренне дохрена отличались или не могли перекрестно открывать файлы друг друга, вплоть до падения программы.

делал загрузчик, только текстовых версий. но они слишком много весят, + задрало править парсер под постоянно попадающиеся вариации. например они в одном из случаев float приводили к int перед сохранением и на чтото умножали или вычитали. не понял смысл этой фигня, может чтоб запятая не плавала но нафига еще чтото делать с числом. подбирать эмпирически пришлось ><
а FBXSDK как то нормально это проглатывало, тоесть предусматривала такой подход

#11
(Правка: 16:27) 16:24, 4 июля 2019

Mira
> задрало править парсер под постоянно попадающиеся вариации
Лол, парсер ASCII FBX занимает ~120 строк (https://github.com/mrDIMAS/DmitrysEngine/blob/master/fbx/fbx_ascii.c)

Mira
> например они в одном из случаев float приводили к int перед сохранением и на
> чтото умножали или вычитали. не понял смысл этой фигня,
FbxTimeUnit же -

The time unit in FBX (FbxTime) is 1/46186158000 of one second.
, они хранят время в интах которые показывают количество квантов времени.

Подобных проблем не встречал, все довольно очевидно там. К тому же есть документация по формату.

#12
19:03, 4 июля 2019

mr.DIMAS
> FbxTimeUnit
нет, они там веса так сохранили (Deformer data) или как оно там у них называется, забыл.
mr.DIMAS
> Лол, парсер ASCII FBX занимает ~120 строк
не сам парсер имел ввиду, а скорее код который это превращает в объехт.
mr.DIMAS
> Подобных проблем не встречал, все довольно очевидно там.
ну если у тебя корректно открывает результаты экспорта всех программ (как юнити например) то ты первый.

ПрограммированиеФорумГрафика