THREE.js 使用 sceneLoader 加载由 THREE.js 编辑器创建的场景时出现异常

THREE.js Exception when using sceneLoader to load scene created by THREE.js Editor

本文关键字:THREE js 异常 创建 sceneLoader 使用 加载 编辑器      更新时间:2023-09-26

错误在 3 .js:12917 上Uncaught TypeError: Cannot read property 'opacity' of undefined

我正在使用的场景文件是:

{
"metadata": {
    "version": 4.3,
    "type": "Object",
    "generator": "ObjectExporter"
},
"geometries": [
    {
        "uuid": "7F5BC6A2-4B74-4049-8AF8-40A5EF310430",
        "type": "CubeGeometry",
        "width": 100,
        "height": 100,
        "depth": 100,
        "widthSegments": 1,
        "heightSegments": 1,
        "depthSegments": 1
    }],
"materials": [
    {
        "uuid": "95D0C78A-2066-4A8D-9F46-73B3038E55DE",
        "type": "MeshBasicMaterial",
        "color": 16777215,
        "opacity": 1,
        "transparent": false,
        "wireframe": false
    }],
"object": {
    "uuid": "E0E0DAAE-012A-49DB-BC1B-2878BCA7F0DA",
    "type": "Scene",
    "matrix": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],
    "children": [
        {
            "uuid": "E60D8291-4E35-4365-A98E-7AEA1D1D433F",
            "name": "Cube 1",
            "type": "Mesh",
            "geometry": "7F5BC6A2-4B74-4049-8AF8-40A5EF310430",
            "material": "95D0C78A-2066-4A8D-9F46-73B3038E55DE",
            "matrix": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]
        }]
}

}

我已经检查过,它确实加载成功并且是有效的 JSON(JSONLint);我还测试了JSONLoader以成功加载JSON模型。我似乎正在使用最新版本。场景是在THREE.js编辑器中创建的,恐怕我不知道如何在它之外创建一个场景。

根据 https://github.com/mrdoob/three.js/issues/4259,你应该使用ObjectLoader:

 function loaded(scene) {
    ...
    renderer.render(scene, camera)
 }
 new THREE.ObjectLoader().load("scene.js", loaded)

显然问题出在编辑器创建的场景文件上。我刚刚尝试通过三个场景示例运行场景文件.js并得到相同的错误。