json - Three.js JSONLoader blender 模型错误 : property 'length' undefined

标签 json 3d three.js undefined blender

我最近一直在尝试 Three.js,我使用了 Blender 的导出器插件来测试在 Blender 中制作模型并导出,以便我可以在 Three.js 程序中使用它们。

我将附加组件包含在 blender 中,并仅使用 blender 的基本立方体模型,按照导出商的说法将其导出为 .json。然后我将模型导入到我的 Three.js 中,作为 guide
但这给了我一个错误:

Uncaught TypeError: Cannot read property 'length' of undefined.

我已经在线搜索并尝试了几种不同的方法(例如在加载程序的函数调用中包含 Material ),但似乎没有任何效果。

我还检查了 stackoverflow 以获得答案,但到目前为止似乎没有解决任何问题。如果有人能澄清我做错了什么,我将不胜感激。

我的 three.js 的代码程序:
var WIDTH = 1000,
        HEIGHT = 1000;


var VIEW_ANGLE = 45,
        ASPECT = WIDTH / HEIGHT,
        NEAR = 0.1,
        FAR = 10000;


var radius = 50,
        segments = 16,
        rings = 16;

var sphereMaterial =
        new THREE.MeshLambertMaterial(
                {
                    color: 0xCCCCCC
                });


var sphere = new THREE.Mesh(
        new THREE.SphereGeometry(
                radius,
                segments,
                rings),
        sphereMaterial);



var pointLight =
        new THREE.PointLight(0x660000);


var $container = $('#container');


var renderer = new THREE.WebGLRenderer();
var camera =
        new THREE.PerspectiveCamera(
                VIEW_ANGLE,
                ASPECT,
                NEAR,
                FAR);

var scene = new THREE.Scene();

var loader = new THREE.JSONLoader(); // init the loader util


scene.add(camera);


pointLight.position.x = 10;
pointLight.position.y = 50;
pointLight.position.z = 130;


scene.add(pointLight);

camera.position.z = 300;


renderer.setSize(WIDTH, HEIGHT);

$container.append(renderer.domElement);
window.requestAnimFrame = (function () {
    return  window.requestAnimationFrame ||
            window.webkitRequestAnimationFrame ||
            window.mozRequestAnimationFrame ||
            function (callback) {
                window.setTimeout(callback, 1000 / 60);
            };
})();


loader.load('test.json', function (geometry, materials) {
    var material = new THREE.MeshFaceMaterial(materials);
    var object = new THREE.Mesh(geometry, material);
    scene.add(object);

});


(function animloop() {
    requestAnimFrame(animloop);

    renderer.render(scene, camera);
})();

最佳答案

根据我迄今为止与导出商的经验,您必须非常小心您勾选了哪些框!

此长度错误通常是因为您没有导出顶点,或者导出场景而不是对象。

关于json - Three.js JSONLoader blender 模型错误 : property 'length' undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28299144/

相关文章:

c# - 如何在 3d 空间 C# 中给定三个点找到圆的半径

javascript - Three.js中的.clone()方法如何节省内存?

javascript - 阴影在 Three.js 中重复

python - 在 Python 中使用 json.loads 时,如何处理 CSV 中的非 ascii 字符?

c# - 通过流式传输 json 的某些部分来解析巨大的 OData JSON 以避免 LOH

arrays - 如何使用Invoke-WebRequest的GET方法构建查询字符串

c++ - 我可以在 glTexImage2D 调用后释放分配给 Image 的内存吗?

3d - 如何绘制 (x,y,z) 点以显示其密度

javascript - 场景未渲染(three.js)

python - Python中的JSON字符串解析错误