我最近一直在尝试 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/