Ich habe Three.js in letzter Zeit ausprobiert und ich habe das Exporter-Addon für Blender verwendet, um Modelle in Blender zu testen und zu exportieren, damit ich sie in drei verwenden kann .js Programm.Three.js JSONLoader Mixer-Modell Fehler: Eigenschaft 'Länge' undefined
Ich habe das Add-on zum Mixer hinzugefügt, und mit nur dem grundlegenden Würfelmodell von Blender, exportierte es zu .json, wie der Exporteur sagt. Dann importierte ich das Modell in meine three.js mit diesem als guide aber das gab mir eine Fehlermeldung:
Uncaught TypeError: Cannot read property 'length' of undefined.
Ive bereits online gesucht und versuchte, ein paar verschiedenen Ansätze (wie zB ein Material in dem Funktionsaufruf von der Loader) aber nichts scheint zu funktionieren.
Ich habe auch stackoverflow für Antworten überprüft, aber bis jetzt scheint nichts gelöst. Wenn jemand erklären würde, was ich falsch mache, wäre ich sehr dankbar.
Der Code für mein three.js
Programm:
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);
})();
Wie kann ich debuggen? –