- Materials[json. js]类型]不是构造函数

Error in three.js :- Materials[json.type] is not a constructor

本文关键字:类型 构造函数 js Materials json      更新时间:2023-09-26

我正在制作一个web应用程序,它将渲染3D动画模型。这些模型由"玛雅2016"制作。我使用three.js (r81)导出这些模型"maya出口商插件"(你可以在这里检查maya出口商插件)。链接,当我加载这个导出的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. s]在three.js库文件(var material = new Materials json)中,不是构造函数。)在行号:31381

请帮我解决这个问题。

我今天早些时候遇到了这个错误。最后我检查了json。type是在json对象中,我传递了它,看看它是否匹配材料对象中的任何类型。这是一个来自R72的旧对象文件,它返回的类型是"meshfacemmaterial"。但这种类型在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
});