【问题标题】:Error in three.js :- Materials[json.type] is not a constructorthree.js 中的错误:- Materials[json.type] 不是构造函数
【发布时间】:2017-03-08 19:44:20
【问题描述】:

我正在开发一个将呈现 3D 动画模型的网络应用程序。这些模型由“Maya 2016”制造。我正在使用 three.js (r81) 'maya exporter plugin' 导出这些模型(您可以在此处查看 maya exporter 插件)。 link,当我使用下面的代码加载这个导出的 json 模型时:

var objectLoader = new THREE.ObjectLoader(manager);
objectLoader.load( 'assets/New-Heart/full_heart.json', function (object) {            
    scene.add(object);
}, onProgress, onError );

然后它给出以下错误:Uncaught TypeError: Materials[json.type] is not a constructor in three.js library file (var material = new Materials json.type ;) 行号:31381

请帮我解决这个问题。任何建议都会很有意义。

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    我今天早些时候遇到了这个错误。我最终检查了我传递的 json 对象中的 json.type 是什么,以查看它是否与 Materials 对象中的任何类型匹配。这是一个来自 R72 的旧目标文件,它返回的类型是“MeshFaceMaterial”。但这种类型在 R82 中不再存在。这是 ThreeJs R82 中带有材料列表的对象。如果您的类型不在此处,这就是您收到错误的原因。

    var Materials = Object.freeze({
        ShadowMaterial: ShadowMaterial,
        SpriteMaterial: SpriteMaterial,
        RawShaderMaterial: RawShaderMaterial,
        ShaderMaterial: ShaderMaterial,
        PointsMaterial: PointsMaterial,
        MultiMaterial: MultiMaterial,
        MeshPhysicalMaterial: MeshPhysicalMaterial,
        MeshStandardMaterial: MeshStandardMaterial,
        MeshPhongMaterial: MeshPhongMaterial,
        MeshNormalMaterial: MeshNormalMaterial,
        MeshLambertMaterial: MeshLambertMaterial,
        MeshDepthMaterial: MeshDepthMaterial,
        MeshBasicMaterial: MeshBasicMaterial,
        LineDashedMaterial: LineDashedMaterial,
        LineBasicMaterial: LineBasicMaterial,
        Material: Material
    });
    

    【讨论】:

    • 是的!你是对的,那么我将如何解决这个问题。
    • 我在 github(three.js) 上发布了同样的问题,@mrdoob 建议我使用 JSONLoader 而不是 ObjectLoader。因为“maya three.js exporter”提供了旧的 json 格式,并且 ObjectLoader 不支持。所以他对ObjectLoader做了一些改动。这是链接:(github.com/mrdoob/three.js/commit/…) 所以我正在使用 JSONLoader。感谢您的帮助
    猜你喜欢
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2017-07-27
    • 2019-08-11
    相关资源
    最近更新 更多