我最近一直在尝试使用Three.js,我使用Blender的导出器插件来测试在blender和导出中制作模型,以便我可以在three.js程序中使用它们。
我将附加组件包含在搅拌机中,并仅使用搅拌机的基本立方体模型,将其导出为.json,如出口商所说。然后我使用此作为guide将模型导入我的three.js 但这给了我一个错误:
Uncaught TypeError: Cannot read property 'length' of undefined.
我已经在线搜索并尝试了一些不同的方法(比如在加载器的函数调用中包含一个材质),但似乎没有任何工作。
我还检查了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);
})();
答案 0 :(得分:6)
导出时,将类型从缓冲区测量更改为几何(Blender 2.76)
答案 1 :(得分:3)
根据我迄今为止与出口商的经验,你必须非常小心你打勾的哪个方块!
此长度错误通常是因为您要么不导出顶点,要么导出场景而不是对象。
答案 2 :(得分:1)
我对新导出器有同样的问题。
如果选择SCENE,我通常会得到"无法读取属性'长度'未定义"
如果我只选择对象以及材质和顶点。它通常似乎永远陷入困境。
更新
检查此问题的回复!
答案 3 :(得分:1)
如前路杀手所述,导出为Geometry而不是BufferedGeometry是有效的。
还要注意,JSON模型的加载是异步处理的(仅在操作完成后才调用回调,其余代码将继续运行)。该模型在前一帧或第二帧中将不存在,因此请在进行动画循环内的任何操作之前检查模型是否存在。