Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Threejs blender exporter exports in wrong format

I'm trying to export a blender model to threejs json with the help of the provided blender exporter. On parsing the json file I get an error:

Uncaught TypeError: Cannot read property 'length' of undefined

The json file looks as following (ommiting vertices and faces):

{
    "textures": [],
    "metadata": {
        "version": 4.3,
        "sourceFile": "UV-World.blend",
        "type": "Object",
        "generator": "io_three"
    },
    "images": [],
    "materials": [],
    "object": {
        "matrix": [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],
        "children": [{
            "type": "Mesh",
            "name": "Kugel",
            "uuid": "5051D840-9982-4F9A-8CFF-36303B38E091",
            "position": [0.0,0.0,0.0],
            "rotation": [-1.5707964897155762,0.0,0.0],
            "scale": [1.0,0.9999999403953552,0.9999999403953552],
            "visible": true,
            "castShadow": true,
            "receiveShadow": true,
            "geometry": "DEAE2CE2-9824-4F91-BE4C-1C80BEDC566A"
        }],
        "type": "Scene",
        "uuid": "8C543616-2AB0-4D1D-B76D-549E32A0E468"
    },
    "geometries": [{
        "type": "Geometry",
        "data": {
            "name": "KugelGeometry",
            "metadata": {
                "version": 3,
                "faces": 512,
                "vertices": 482,
                "generator": "io_three"
            },
            "vertices": [...],
            "faces": [...]
        },
        "uuid": "DEAE2CE2-9824-4F91-BE4C-1C80BEDC566A"
    }]
}

This seems to be not in the format that threejs expects it to be. If I manually change the json to be the following threejs parses and displays the model as expected.

{
    "scale": 1,
    "vertices": [...],
    "faces": [...]
}

Exporting and importing to/from obj works as expected.

As I could not find anyone also having this problem, I guess it's a usage error. I'm new to blender, so maybe I did something wrong there? I'm using Blender 2.73a and threejs just cloned from the repository.

like image 523
syntonym Avatar asked Jan 21 '15 23:01

syntonym


1 Answers

I suspect you are using JSONLoader. Try using ObjectLoader instead.

like image 112
mrdoob Avatar answered Nov 06 '22 15:11

mrdoob