Я могу успешно загрузить 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);
} );