строительный скелет от модели fbx - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь экспортировать арматуру из блендера в виде файла FBX, а затем создаю из него скелет, загруженный с помощью FBXLoader.Затем я хочу слить его с скином персонажа сетки.Моя цель - иметь разные модели и разные позы и просто иметь возможность смешивать и сочетать их между собой.

Я попытался создать здесь кодовую ручку: https://codepen.io/michael-tipton/pen/mGvvQr?editors=0011 1, но fbxloader isn 'вытащить файлы из Dropbox.Не знаете, как действовать дальше.

Моя основная функция для создания костей из файла FBX заключается в следующем:

function createBones( root , array ) {
            if(root === null && root === undefined ) {
              return;
            } else {
              let bone = new THREE.Bone();

              bone.position.set( root.position.x, root.position.y, root.position.z );
              bone.name = root.name;
              bone.setRotationFromQuaternion( root.quaternion );
              bone.scale.set( root.scale.x, root.scale.y, root.scale.z );
              if(root.parent !== null && root.parent !== undefined ) {
                  bone.parent = root.parent;
              }
              array.push(bone);

              for(let i = 0, count = root.children.length; i < count; i++) {
                  createBones(root.children[i], array);
              }
              return;
            }
        }

Мне трудно понять, как поступить с устранением неполадок.,Я пытался использовать скелетонелпер, но арматура настолько изогнута и отличается от модели (и также очень мала), что не особенно помогает сообщить мне, что происходит.

Я не уверен, еслиарматура загружается неправильно, или я неправильно воссоздаю скелет, или если это что-то еще.Когда я попытался применить какое-либо движение к арматуре, ячеистая сетка вообще не двигалась.

Есть ли у кого-нибудь опыт устранения неполадок этих типов или какие-либо идеи, как я могу понять, что происходит?на?Спасибо и 1 миллион кредитов кармы за то, что прочитали это!

1 Ответ

0 голосов
/ 21 сентября 2018

Сначала я заметил, что меня переполняют сообщения в консоли, поэтому я прокомментировал ваш файл console.log из animate:

var animate = function() {
  const v = Date.now() / 2000
  var hips = scene.getObjectByName("hips");
  if (hips) {
    hips.position.x = Math.sin(v) * 10
    hips.position.z = Math.cos(v) * 10
  }
  //console.log(hips);
}

Именно тогда я заметил проблему с CORS, поэтому скачал файлы локально.
Затем я получил ошибку об отсутствующей библиотеке (inflate.min.js), которая была загружена и добавлена ​​в проект.

Вот ваш код в «работает для меня» без консольных ошибок:
https://raw.githack.com/heldersepu/hs-scripts/html/HTML/bones/bones.html

...