微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Three.JS-使用相同的骨骼结构在SkinnedMeshes之间共享骨骼

如何解决Three.JS-使用相同的骨骼结构在SkinnedMeshes之间共享骨骼

我一直在努力寻找一种在现有骨架上添加/删除衣物的方法(服装网格和身体网格应该共享骨架),但是我总是最终得到有趣/奇怪的结果。

我希望附加到共享骨架上的所有服装都已导出到具有相同骨架的Blender中,它们都具有相同的骨骼名称和结构,我认为这是相同的会非常简单。

我在Native iOS SceneKit上使用了这些相同的3D文件,实际上我所做的只是clothing.skeleton = body.skeleton

但是正如我所说,在Three.JS上似乎并不那么简单。

我尝试过类似的东西

clothingMesh.bind(bodySkeleton,clothingMesh.worldMatrix);

也尝试过:

clothingMesh.skeleton = bodySkeleton;
bodySkeleton.update();

但是总是以奇怪的结果结束。我已经看过一些使用“目标定位”功能代码,但我相信这些仅在骨骼名称不匹配时才使用,这不是我的情况。

JSfiddle游乐场

我一直在通过JSfiddle https://jsfiddle.net/cabada/sxv4kbnm/ 进行尝试,这里有完整的代码试图构建这个概念。

修复骨骼绑定的另一个目标是能够从其他来源复制骨骼动画,因此我可以即时下载它们并将其动态应用于我的角色。但是,再次得到奇怪的结果,动画骨骼也共享与要进行动画处理的目标骨骼相同的骨骼名称和结构。

我在网上找到与该主题相关的资源和示例

https://raw.githack.com/funwithtriangles/three.js/dev/examples/webgl_animation_sharedskeleton.html

https://rawcdn.githack.com/mrdoob/three.js/r105/examples/webgl_loader_sea3d_bvh_retarget.html

https://jsfiddle.net/satori99/pay0oqcd/

https://github.com/mrdoob/three.js/pull/16608

Illustration

目标是能够在服装上添加/删除衣服,使每个角色的所有网格都使用一个骨架(以达到良好的性能),并能够添加/删除来自其他来源的动画。

>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。