Three.js FBX 二进制格式不支持

Posted

技术标签:

【中文标题】Three.js FBX 二进制格式不支持【英文标题】:Three.js FBX Binary format not supported 【发布时间】:2016-08-31 07:20:27 【问题描述】:

我正在一个基于 javascript 的移动应用程序中使用three.js。我正在为 3D 模型使用 .fbx 文件。但它不支持 FBXLoader 中的二进制格式。我不太了解 3D 模型和格式。任何帮助,将不胜感激。

控制台错误: FBX加载器:!!!不支持 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 );

【问题讨论】:

【参考方案1】:

如果您查看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 的人提到的,但值得一提。

【讨论】:

以上是关于Three.js FBX 二进制格式不支持的主要内容,如果未能解决你的问题,请参考以下文章

Three.js - 使用 .FBX 模型时出现“未知格式”错误

FBX SDK 导出为较旧的 fbx 文件格式

将 FBX 转换为 three.js

如何在three.js中为.fbx模型应用纹理?

Three.js:FBX 骨骼正确旋转,而 GLTF 骨骼奇怪地旋转

3D模型在线查看利器多种格式