2016-04-18 8 views
0

Я импортировал модель в свою сцену Three.js. Я могу перемещать и поворачивать кости, но геометрия модели не перемещается с костями.Импортированная геометрия JSON не перемещается с костями

Вот код, который я использовал, чтобы импортировать файл в формате JSON и добавить его на сцену,

/*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);  

} 

файл JSON, который я импортировал включает в себя вес, так что я не думаю, что я должен был добавить их самим , Было бы это связано с привязкой скелета к сетке?

Вот ссылка на мой код - https://jsfiddle.net/joeob61k/1/ (Новая ссылка с помощью скриптов, благодаря @Mr Polywhirl.)

Как вы можете видеть, «Bone_2» в контроле GUI перемещает один из костей, но не сетка ,

EDIT: Я попытался получить доступ к костям сетки в функции render(). Я сделал это, используя следующую строку кода,

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

Я получаю следующее сообщение об ошибке: «Не удается прочитать свойство„скелет“неопределенной (...)» были Неопределенные является переменной меш. Есть ли новый способ доступа к костям SkinnedMesh, которые мне нужно использовать?

+1

Я добавил недостающие сценарии к [ваш JSFiddle] (https: // jsfiddle. net/joeob61k/1 /) Если кто-то хочет сработать. –

+0

@ Mr.Polywhirl у вас есть идея о том, как решить эту проблему? Спасибо, что добавили скрипты! – skelto

ответ

0

Проблема была с линией,

materials.skinning = true; 

Необходимо следующее работать,

materials[0].skinning = true;