我正在基于JavaScript的移动应用程序中使用three.js。我正在将.fbx文件用于3D模型。但是它不支持FBXLoader中的二进制格式。我对3D模型和格式了解不多。任何帮助,将不胜感激。
控制台错误:
FBXLoader:!!!不支持FBX二进制格式!
这是我正在加载的fbx代码:
var loader = new THREE.FBXLoader( manager );
// alert(loader);
loader.load( 'img/watcher.FBX', function( object ) {
alert(object);
object.traverse( function( child ) {
if ( child instanceof THREE.Mesh ) {
// pass
}
if ( child instanceof THREE.SkinnedMesh ) {
if ( child.geometry.animations !== undefined || child.geometry.morphAnimations !== undefined ) {
child.mixer = new THREE.AnimationMixer( child );
mixers.push( child.mixer );
var action = child.mixer.clipAction( child.geometry.animations[ 0 ] );
action.play();
}
}
} );
scene.add( object );
}, onProgress, onError );
最佳答案
如果查看header of the javascript file或https://github.com/yamahigashi/FBXLoaderJS' github repo,您会看到它说:ASCII和版本7格式
/**
* @author yamahigashi https://github.com/yamahigashi
*
* This loader loads FBX file in *ASCII and version 7 format*.
*
* Support
* - mesh
* - skinning
* - normal / uv
*
* Not Support
* - material
* - texture
* - morph
*/
一种替代方法是使用glTF和FBX converter to glTF,然后使用glTF loader。
请注意,二进制FBX文件还有另一个问题,有时可能会引起问题。在2016.0中,进行了更改以支持大文件(> 2Gb)。此更改仅影响二进制FBX文件格式。那些旧的阅读器无法读取这些文件,因为文件指针的大小不同。但是对于其余文件,它们几乎是兼容的。可以肯定的是,这不会影响此处的javascript加载程序,因为我是为使用FBX SDK的用户提及的,但值得一提。