从fbx模型构建骨架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从fbx模型构建骨架相关的知识,希望对你有一定的参考价值。

我试图从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万业力信用你读这个!

答案

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

以上是关于从fbx模型构建骨架的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式使用 xna 为 fbx 模型设置动画

如何从 2018 FBX SDK 中获取反向绑定姿势矩阵?

升级到Unity 3.5

使用 fbx sdk c++ 从 fbx 读取纹理文件名

Maya Mel 脚本动画不作为 FBX 进行动画处理

使用 XNA 4.0 从 fbx 模型中提取顶点