Можно ли создать динамическую анимацию, применяя преобразования к костям 3D-модели с помощью three.js? Я попытался перемещать и поворачивать кости SkinnedMesh, но сетка не обновлялась.Динамическая анимация костей в Three.js
loader = new THREE.JSONLoader();
loader.load('/JS-Projects/Virtual-Jonah/Modelos/initialPose.js',function jsonReady(geometry)
{
mesh = new THREE.SkinnedMesh(geometry, new THREE.MeshNormalMaterial({skinning : true}));
mesh.scale.set(10, 10, 10);
mesh.position.z = mesh.position.y = mesh.position.x = 0;
mesh.geometry.dynamic = true;
scene.add(mesh);
var index = 0;
for (var i = 0; i < mesh.bones.length; i++)
{
if (mesh.bones[i].name == "forearm_R")
{
index = i;
break;
}
}
setInterval (function()
{
mesh.bones[index].useQuaternion = false;
mesh.bones[index].position.z += 10;
mesh.bones[index].matrixAutoUpdate = true;
mesh.bones[index].matrixWorldNeedsUpdate = true;
mesh.geometry.verticesNeedUpdate = true;
mesh.geometry.normalsNeedUpdate = true;
renderer.render(scene, camera);
}, 33);
renderer.render(scene, camera);
});
модели я использую была создана с MakeHuman (ночные сборки), экспортируемый в Collada, импортируемый в Blender и экспортируемый в three.js модели JSON. Ссылка на модели заключается в следующем:
https://www.dropbox.com/sh/x1606vnaoghes1y/gG_BcZcEKd/initial
Спасибо!
Я предполагаю, что сетка должна быть обновлена в соответствии с новым положением кости. Метод animation.update() может содержать ответ. В противном случае я нашел метод mesh.updateMorphTargets(), а также Bone.update(), который мог бы помочь ... –
Является ли это специфическим как для трех .js *, так и для Unity? Некоторые из ответов, похоже, указывают на то, что это так. –