我可以从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);
} );