Я импортировал модель в свою сцену 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, которые мне нужно использовать?
Я добавил недостающие сценарии к [ваш JSFiddle] (https: // jsfiddle. net/joeob61k/1 /) Если кто-то хочет сработать. –
@ Mr.Polywhirl у вас есть идея о том, как решить эту проблему? Спасибо, что добавили скрипты! – skelto