首页 > 解决方案 > 三个 js - JSON 加载器在示例中有效,但在我的代码中无效?

问题描述

我只是想在一个模型中加载从搅拌机到三个 js 的动画。所以我试图复制http://stemkoski.github.io/Three.js/Model-Animation.html

我下载了他的代码,他使用:

var jsonLoader = new THREE.JSONLoader();
        jsonLoader.load( "models/android-animations.js", addModelToScene );
        // addModelToScene function is called back after model has loaded

        var ambientLight = new THREE.AmbientLight(0x111111);
        scene.add(ambientLight);

    }

    function addModelToScene( geometry, materials ) 
    {
        // for preparing animation
        for (var i = 0; i < materials.length; i++)
            materials[i].morphTargets = true;

        var material = new THREE.MeshFaceMaterial( materials );
        android = new THREE.Mesh( geometry, material );
        android.scale.set(10,10,10);
        scene.add( android );
    }

授予我在节点 JS 中工作,但是JSONLoader has been removed当我这样做时出现错误:

var jsonLoader = new THREE.JSONLoader();
jsonLoader.load( "./src/scripts/elements/android-animations.js", this.addModelJson);

我试过 FBXLoader,ObjectLoader,一切。我可以加载模型,但不能加载带有动画的模型。这是唯一的解决方案吗?

如果 JSONLoader 不再存在,我如何从搅拌机加载带有动画的模型?

更新:

this当我像这样使用 LegacyJSONLoader 时未定义:

var jsonLoader = new THREE.LegacyJSONLoader();
jsonLoader.load( "./src/scripts/elements/android-animations.js", this.addModelJson);

addModelJson( geometry, materials, scene )
  {
    // for preparing animation
    for (var i = 0; i < materials.length; i++)
        materials[i].morphTargets = true;

    var material = new THREE.MeshFaceMaterial( materials );
    var android = new THREE.Mesh( geometry, material );
    android.scale.set(10,10,10);

    this.scene.add( android );
  }

标签: javascripthtmlthree.js

解决方案


这个加载器仍然可以作为LegacyJSONLoader. 如果您在项目中包含该文件,您应该能够LegacyJSONLoader像以前一样创建并加载 JSON 模型的实例。
这是链接


推荐阅读