2016-04-18 4 views
0

Ich habe ein Modell in meine Three.js-Szene importiert. Ich kann die Knochen bewegen und drehen, aber die Geometrie des Modells bewegt sich nicht mit den Knochen.Importierte JSON-Geometrie bewegt sich nicht mit Knochen

Hier ist der Code, den ich verwendet habe die JSON-Datei und fügen Sie sie in die Szene zu importieren,

/*load JSON file*/ 
// instantiate a loader 
var loader = new THREE.JSONLoader(); 
loader.load('https://cdn.rawgit.com/wpdildine/wpdildine.github.com/master/models/cylinder.json', addModel); 

var helpset; 
var scaleVal = 3; 

function addModel(geometry, materials){ 

    materials.skinning = true; 

    var cs = scaleVal * Math.random(); 

    mesh = new THREE.SkinnedMesh(geometry, new THREE.MeshFaceMaterial(materials)); 

    scene.add(mesh); 
    helpset = new THREE.SkeletonHelper(mesh); 
    scene.add(helpset);  

} 

Die JSON-Datei, die ich importiert enthält Gewichte so habe ich ich sie selbst nicht denken musste hinzufügen . Würde es etwas damit zu tun haben, das Skelett an das Netz zu binden? Hier

ist ein Link zu meinem Code - https://jsfiddle.net/joeob61k/1/ (Neuer Link mit Skripten, dank @Mr Polywhirl.)

Wie Sie sehen können, 'Bone_2' in den GUI-Controls bewegt sich einer der Knochen, aber nicht das Netz .

EDIT: Ich habe versucht, Zugriff auf die Knochen des Netzes in der render() -Funktion. Ich habe mithilfe der folgenden Codezeile so getan,

mesh.skeleton.bones[2].rotation = 0.1; 

bekomme ich folgende Fehlermeldung: Skelett ‚undefinierter (...)‚‘nicht Eigentum lesen‘ wurden, ist nicht definiert die Maschen variabel. Gibt es eine neue Möglichkeit, auf die Knochen einer SkinnedMesh zuzugreifen, die ich verwenden muss?

+1

Ich habe die fehlenden Skripte [Ihre JSFiddle] (https: // jsfiddle. net/joeob61k/1 /) Wenn jemand davon arbeiten will. –

+0

@ Mr.Polywhirl hätten Sie eine Idee, wie Sie dieses Problem lösen können? Danke, dass du die Skripte hinzugefügt hast! – skelto

Antwort

0

Das Problem mit der Linie war,

materials.skinning = true; 

Es muss arbeiten, die folgenden werden zu,

materials[0].skinning = true;