FBXLoader找不到fbx文件的版本号

时间:2019-07-15 14:45:32

标签: reactjs three.js loader fbx

我正在尝试加载.fbx文件,loader.load函数会引发以下错误: THREE.FBXLoader:找不到给定文件的版本号。

我不知道如何解决这个问题。如何检查fbx文件是否具有版本号?

下面您可以找到我编写的react组件。在测试应用程序时,我只会看到黑色的画布。

我尝试了两个不同的文件,但是两个文件都有相同的错误。

export default class myComponent extends Component {
  componentDidMount() {
    const camera = new THREE.PerspectiveCamera(
      45,
      window.innerWidth / window.innerHeight,
      1,
      2000
    );
    camera.position.set(2, 18, 28);

    const scene = new THREE.Scene();

    const light = new THREE.HemisphereLight(0xffffff, 0x444444);
    light.position.set(0, 1, 0);
    scene.add(light);

    const gridHelper = new THREE.GridHelper(28, 28, 0x303030, 0x303030);
    scene.add(gridHelper);

    const renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);
    this.model.appendChild(renderer.domElement);

    const loader = new FBXLoader();

    let model = new THREE.Object3D();

    loader.load(
      './3DModels/MHT.fbx',
      function(object) {
        model = object.scene;
        scene.add(model);
      },
      undefined,
      function(e) {
        console.log(e);
      }
    );

    renderer.render(scene, camera);

  }
  render() {
    return <div ref={ref => (this.model = ref)} />;
  }
}

FBXLoader引发此错误:THREE.FBXLoader:找不到给定文件的版本号。

3 个答案:

答案 0 :(得分:1)

loader.load('./3DModels/MHT.fbx', function(object) {
  ...
})

相反:

const path = require(./3DModels/MHT.fbx);//写在类的外面
loader.load(path, function(object) {
  ...
})

答案 1 :(得分:0)

我刚刚遇到了相同的问题,您可以尝试像这样调试:

我发现我的项目使用Mockjs的原因使XMLHttpRequest成为MockXMLHttpRequest

// relative code in three.js:
request.addEventListener( 'load', function ( event ) {
                // if you use Mockjs, this become MockXMLHttpRequest but not XMLHttpRequest 
               // this.response not is ArrayBuffer ,there is the bug.
                var response = this.response;
                var callbacks = loading[ url ];

这只是我的案子,可能会对您有所帮助。

答案 2 :(得分:0)

您是将文件托管在src文件夹还是公用文件夹中? 您应该将fbx文件保存在公用文件夹中

加载程序扫描文档并解析文本以查找需要加载的内容。使用react的情况是,这将在DOM呈现之前触发,因此基本上看不到该版本,因为它看不到任何文件。

我在尝试“调试”加载程序代码时解决了这个问题。原来是我:)

fbx的另一件事是您应始终使用最新的加载程序插件。 Under this link您将找到原始插件的链接以及如何将其转换为React模块的示例。

希望这会有所帮助。