0

我的目标是将单独的对象(例如:可穿戴物品)附加到动画模型,以便绑定对象由模型动画控制。

我找到了这些,但似乎都过时了。

我尝试使用从搅拌机导入的角色,该角色经过蒙皮、装配和动画处理。

我的问题是:当我将新网格添加到模型的特定骨骼(代码中注释掉的部分)时,当前动画剪辑切换到第一个(t-pose),并且蒙皮被破坏(模型变白)。然而,对象连接到骨骼,并随之移动。

const {scene, animations} = await Utils.loadModel('model/someName.gltf');
const model = scene.children[0];

const material = new THREE.MeshBasicMaterial();
material.alphaTest = 0.5;
material.skinning = true;

model.traverse((child) => {     
    if (child.material) {
        material.map = child.material.map;
        child.material = material;
        child.material.needsUpdate = true;
    }
    if (child.isBone && child.name === 'RightHand') {
        // child.add(createMesh());
    }
});

gScene.add(model);

即使添加了一个简单的立方体,它也无法正常工作,但如果我可以将靴子添加到角色上,那就太好了,也就是像脚一样移动。

4

1 回答 1

0

看起来我找到了解决方案。

我更新了演示(它只是一个 PoC)https://github.com/tomo0613/3d-animated-char-test

首先(在搅拌机中):

  • 将骨骼添加到应该与角色一起移动的鞋子。(我猜这些应该有相同的骨头[位置、旋转、大小];演示中存在差异)

然后是JS代码:

  • 将鞋子(整个网格)作为子网格添加到腿骨。
  • 在每次渲染之前,将角色骨骼属性复制到鞋骨属性[位置和四元数]

我仍然很好奇,是否有任何预期/或更好的方法来做到这一点。?

于 2019-01-26T18:06:47.793 回答