Three.js родительская сетка до кости - PullRequest
0 голосов
/ 19 января 2019

Моя цель - прикрепить отдельные объекты (например, носимые предметы) к анимированной модели, чтобы связанные объекты контролировались анимацией моделей.

Я нашел их, но все кажется устаревшим.

Я экспериментировал с персонажем, импортированным из блендера, с кожей, фальсификацией и анимацией.

Моя проблема: когда я добавляю новую сетку к определенной кости модели (закомментированная часть в коде), текущий анимационный клип переключается на первый (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);

Он работает неправильно, даже если добавлен простой куб, но было бы неплохо, если бы я мог добавить сапоги к персонажу, который двигается как его нога.

1 Ответ

0 голосов
/ 26 января 2019

Похоже, я нашел решение.

Я обновил демо (это всего лишь PoC) https://github.com/tomo0613/3d-animated-char-test

сначала (в блендере):

  • добавить кости к обуви, которые должны двигаться вместе с персонажем.(Я полагаю, что они должны иметь одинаковые кости [позиции, повороты, размеры]; в демоверсии есть различия)

, затем код JS:

  • добавить туфлю(вся сетка) как дочерняя сетка для кости ноги.
  • перед каждым рендерингом копируйте свойства кости персонажа в свойства обуви (позиция и кватернион)

I'mпо-прежнему любопытно, есть ли какой-либо предполагаемый / или лучший способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...