Threejs通过动画将对象保存到JSON

时间:2019-03-22 14:25:11

标签: animation three.js save

我可以从FBX文件成功加载3D对象,并加载和播放其动画。问题是,在我要做之后,我需要保存更改。为此,我将对象和对象动画剪辑保存为JSON。现在,我可以在场景中加载3D对象,但是不会播放任何动画(它将以T姿势站立),但是尝试将保存的剪辑加载到从FBX加载的对象上将可以毫无问题地播放动画。 / p>

从3D对象读取生成的JSON后,似乎丢失了许多数据,这就是为什么尝试播放动画没有任何作用的原因。 如何将加载的FBX模型保存到.json并保留重要数据?我记得曾经看到过一些关于在toJSON方法上放置一些标志的文章,但是再也找不到类似的东西。

编辑: 使用GLTF似乎可以解决此问题,但是three.js GLTFLoader不会加载任何类型的.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/查看对象,我导出的对象被完全bug(https://imgur.com/a/yLimuWp),但我没有注意到,但是我对bug对象进行了3次测试,因此我认为问题出在加载器中,使用非错误对象似乎可以正常加载。尽管导出错误,但是加载对象蒙皮网格物体没有问题,只有网格物体正在加载,如您所见。 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);
} );

0 个答案:

没有答案