Читаете анимацию .FBX?

Как бы вы читали анимацию из файла .fbx? Я использую для этого Java с OpenGL, но это не слишком актуально для этого вопроса. Я просмотрел несколько разных источников и не могу найти никакой информации о форматировании файлов .FBX.

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

Я могу предположить, что это раздел анимации файла.

;Takes and animation section
;----------------------------------------------------

Takes:  {
    Current: "ArmatureAction"
    Take: "ArmatureAction" {
        FileName: "ArmatureAction.tak"
        LocalTime: -1924423249,105843278750
        ReferenceTime: -1924423249,105843278750

        ;Models animation
        ;----------------------------------------------------
        Model: "Model::body" {
            Version: 1.1
            Channel: "Transform" {
                Channel: "T" {
                    Channel: "X" {
                        Default: 0.000000000000000
                        KeyVer: 4005
                        KeyCount: 1
                        Key: 
                            1924423250,0.000000000000000,L
                        Color: 1,0,0
                    }
                    Channel: "Y" {
                        Default: 0.000000000000000
                        KeyVer: 4005
                        KeyCount: 1
                        Key: 
                            1924423250,0.000000000000000,L
                        Color: 0,1,0
                    }
                    Channel: "Z" {
                        Default: 0.000000000000000
                        KeyVer: 4005
                        KeyCount: 1
                        Key: 
                            1924423250,0.000000000000000,L
                        Color: 0,0,1
                    }
                    LayerType: 1
                }
                Channel: "R" {
                    Channel: "X" {
                        Default: 90.000002504348856
                        KeyVer: 4005
                        KeyCount: 1
                        Key: 
                            1924423250,90.000002504348856,L
                        Color: 1,0,0
                    }
                    Channel: "Y" {
                        Default: -89.999995674159678
                        KeyVer: 4005
                        KeyCount: 1
                        Key: 
                            1924423250,-89.999995674159678,L
                        Color: 0,1,0
                    }
                    Channel: "Z" {
                        Default: 0.000000000000000
                        KeyVer: 4005
                        KeyCount: 1
                        Key: 
                            1924423250,0.000000000000000,L
                        Color: 0,0,1
                    }
                    LayerType: 2
                }
                Channel: "S" {
                    Channel: "X" {
                        Default: 1.000000000000000
                        KeyVer: 4005
                        KeyCount: 1
                        Key: 
                            1924423250,1.000000000000000,L
                        Color: 1,0,0
                    }
                    Channel: "Y" {
                        Default: 1.000000000000000
                        KeyVer: 4005
                        KeyCount: 1
                        Key: 
                            1924423250,1.000000000000000,L
                        Color: 0,1,0
                    }
                    Channel: "Z" {
                        Default: 1.000000000000000
                        KeyVer: 4005
                        KeyCount: 1
                        Key: 
                            1924423250,1.000000000000000,L
                        Color: 0,0,1
                    }
                    LayerType: 3
                }
            }
        }
        Model: "Model::head" {
            Version: 1.1
            Channel: "Transform" {
                Channel: "T" {
                    Channel: "X" {...............................

Не могла бы добрая душа объяснить, как это форматируется? Помощь приветствуется!


person JMSD1234    schedule 11.07.2013    source источник
comment
Я аспирант, который в настоящее время создает анимационный движок на основе файла FBX. Я документирую кое-что из того, что собираю, на fbxexplorer.blogspot.com. Не стесняйтесь читать материалы там или спрашивайте, если у вас возникли проблемы. Это чрезвычайно сложный формат файла.   -  person Philip    schedule 14.07.2013


Ответы (1)


Поскольку (IIRC) спецификация FBX не является общедоступной, вы обычно хотите использовать FBX SDK.

онлайн-документация — отличное место для начала. обучение. Однако SDK предоставляет только API C++ и Python.

Вы также можете взглянуть на Blender (с открытым исходным кодом), который предоставляет Экспортер FBX, написанный без использования FBX SDK.

В Википедии также говорится, что продукт OpenEndedGroup, Field, включает библиотеку Java FBX. Вы можете найти их код на Github, а интересующая вас часть, вероятно, является частью jfbxlib.

person anthonyvd    schedule 11.07.2013
comment
Так что я вижу. Я скорее всего просто попробую допилить свой файл ридер как был. Кажется, я узнал, как читать анимацию. В любом случае спасибо! - person JMSD1234; 12.07.2013