从fbx模型构建骨架

问题描述 投票:1回答:1

我试图从blender导出一个电枢作为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;
            }
        }

我很难搞清楚如何进行故障排除。我试图使用skeletonhelper,但是电枢是如此扭曲并且与模型不同(也非常小),它让我知道发生了什么并不是特别有用。

我不确定电枢是否未正确加载,或者我是否正确地重新创建骨架,或者是否是其他东西。当我尝试对衔铁进行某种运动时,蒙皮梅什根本没有移动。

有没有人有解决这些类型问题的经验,或者有任何想法如何深入了解正在发生的事情?谢谢和100万业力信用你读这个!

animation three.js fbx
1个回答
0
投票

首先我注意到我在控制台中充斥着消息,所以我评论了来自animate的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

© www.soinside.com 2019 - 2024. All rights reserved.