каркас здания из модели fbx

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

Я попытался создать его codepen здесь: https://codepen.io/michael-tipton/pen/mGvvQr?editors=0011 1, но fbxloader не загружает файлы из 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 миллион кредитов кармы вам за то, что вы это прочитали!


person Michael Tipton    schedule 20.09.2018    source источник
comment
Я получаю сообщение об ошибке: Не удалось загрузить dropbox.com/s/9z0vmuwemq17lu5/Pose3 .fbx?dl=0: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null', следовательно, не имеет доступа. ___ Вы правильно поняли эти два??   -  person Helder Sepulveda    schedule 21.09.2018
comment
Интересный. Похоже, это проблема CORS. Я думаю, что это можно решить, добавив данные аутентификации к URL-адресу, но пока не уверен. Спасибо за внимание.   -  person Michael Tipton    schedule 21.09.2018
comment
Проблема с cors была лишь одной из многих... Я посылаю вам официальный ответ, чтобы разобраться в проблемах.   -  person Helder Sepulveda    schedule 21.09.2018


Ответы (1)


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

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

person Helder Sepulveda    schedule 21.09.2018
comment
это действительно полезно. Спасибо! - person Michael Tipton; 22.09.2018
comment
Я плюс один, но это не дает кредита, так как у меня меньше 15 повторений :( - person Michael Tipton; 24.09.2018