Threejs сохранение объекта в json с анимацией - PullRequest
0 голосов
/ 22 марта 2019

Я могу успешно загрузить 3D-объект, например, из файла FBX, загрузить и воспроизвести его анимацию. Проблема в том, что после выполнения того, что я должен с этим сделать, мне нужно сохранить изменения. Для этого я сохраняю объект и клип анимации объекта в формате JSON. Теперь я могу загрузить 3D-объект в сцене, но анимация не будет воспроизводиться (она будет стоять в положении T), но попытка загрузить сохраненный клип на объект, загруженный из FBX, воспроизведет анимацию без проблем.

После считывания полученного JSON из 3D-объекта многие данные, похоже, отсутствуют, поэтому попытка воспроизвести анимацию ничего не дает. Как сохранить загруженную модель FBX в формате .json и сохранить важные данные? Я помню, как видел какой-то пост о наложении некоторых флагов на метод toJSON, но не смог найти ничего похожего снова.

Edit: Использование GLTF, кажется, решает эту проблему, но GLTFLoader three.js не загружает какой-либо объект .gltf, и я не знаю почему, для всех объектов, которые я пытался использовать (использовались объекты из threejs.org, примеры GLTFExporter ) Я получаю ту же ошибку:

TypeError: Cannot read property 'geometry' of undefined
at GLTFLoader.js:2572

Вот как я пытаюсь загрузить его:

    loader_helper.gltf_loader.load("./src/data/scene.gltf", function ( gltf ) {
        console.log(gltf); // This is enough to get the error, altough i've tried 
                           // mimicking the FBX import, but getting the same errors
    });

Редактировать: Используя https://gltf -viewer.donmccurdy.com / для просмотра объекта, объект, который я экспортировал, был полностью прослушен (https://imgur.com/a/yLimuWp), и я не заметил, но Я проверил прослушиваемый объект три раза, так что я подумал, что проблема в загрузчике, похоже, что он нормально загружается, используя не прослушиваемый объект. Хотя экспорт содержит ошибки, сетка с объектной оболочкой загружается без проблем, и загружается только сетка, хорошо ... вы видели это. https://imgur.com/a/evGmnOG

Вот как я экспортирую сцену:

// this is a button.onclick function
var exporter = new THREE.GLTFExporter();

exporter.parse( that.scene, function(gltf){
    var stringfied = JSON.stringify(gltf, null, 3);
    require("fs").writeFile( "./src/data/scene.gltf", stringfied, 'utf8', function(err) {
        console.log(err); // saving it to file with nodejs file system
    });
    console.log(gltf);
} );
...