Ostatnio wypróbowałem Three.js i użyłem dodatku do eksportera do Blendera, aby przetestować modelowanie w blenderze i eksportować, więc mogę używać ich w trzech Program .js.Three.js Błąd modelu blendera JSONLoader: właściwość 'length' undefined
Dołączyłem dodatek do miksera, a używając tylko podstawowego modelu kostki blendera, wyeksportowałem go do .json, jak mówi eksporter. Potem importowany model do moich three.js używając tego jako guide ale dał mi błąd:
Uncaught TypeError: Cannot read property 'length' of undefined.
Ive już przeszukiwane online i próbowaliśmy kilka różnych podejść (jak w tym do materiałów w wywołaniu funkcji z program ładujący), ale nic nie działa.
Sprawdziłem również stackoverflow dla odpowiedzi, ale jak dotąd nic nie wydaje się być rozwiązane. Jeśli ktokolwiek wyjaśniłby, co robię źle, byłbym bardzo wdzięczny.
Kod dla mojego programu 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);
})();
Jak można debugować? –