three SkeletonUtils 骨架工具

SkeletonUtils 是 Three.js 中用于处理骨骼动画的一个工具类,主要用于克隆或复制带有骨骼动画的网格(skinned mesh)对象。它提供了一些方法,帮助我们更容易地在动画中重复使用和管理骨骼结构。

SkeletonUtils 有三个静态类方法

  • clone ( object : Object3D ) : Object3D 克隆给定对象及其后代,确保任何 SkinnedMesh 实例都与其骨骼正确关联。同时,骨骼也会被克隆,且必须是传递给此方法的物体的后代。而其他数据,如几何形状和材料,是通过引用来实现重复使用的。
  • retarget ( target : SkeletonHelper, source : SkeletonHelper, options : Object ) : undefined 在 Three.js 中,retarget 方法通常用于将一个骨骼的动画目标(target)从一个源骨骼(source)重新映射,目的是将动画应用到不同的骨骼结构上。这种方法对骨骼动画的重定向非常有用,尤其是当你需要将一个动画从一个模型应用到另一个具有不同骨骼结构的模型时。
    • 具体来说,retarget 方法接受以下三个参数:

      • target (SkeletonHelper): 目标骨骼对象,即你希望应用动画的骨骼结构。
      • source (SkeletonHelper): 源骨骼对象,包含原始动画的骨骼结构。
      • options (Object): 配置对象,用来指定如何映射源骨骼到目标骨骼的选项。
    • retarget 方法的功能 - 动画重定向:将源骨骼的动画数据应用到目标骨骼上,确保目标骨骼正确执行源骨骼的动作。 - 骨骼映射:自动或通过选项配置的方式,匹配源骨骼和目标骨骼之间的关节,并进行适当的转换。

    • options 选项列表

      • preserveBoneMatrix (是否保留骨骼矩阵)
        • 类型: boolean
        • 默认值: true
        • 描述: 如果设置为 true,会保留源骨骼的矩阵数据。在骨骼重定向时,源骨骼的矩阵将被保留,以便在目标骨骼上应用相应的变换。
      • preserveBonePositions (是否保留骨骼位置)
        • 类型: boolean
        • 默认值: true
        • 描述: 如果设置为 true,源骨骼的全局位置将被保留,并应用到目标骨骼中。如果设置为 false,则不会保留骨骼的全局位置。
      • useTargetMatrix (是否使用目标矩阵)
        • 类型: boolean
        • 默认值: false
        • 描述: 如果设置为 true,在骨骼动画重定向过程中会使用目标骨骼的矩阵,而不是源骨骼的矩阵。
      • hip (定义臀部骨骼)
        • 类型: string
        • 默认值: 'hip'
        • 描述: 这是目标骨骼系统中臀部骨骼的名称。hip 是骨骼重定向的关键节点,通常用作根骨骼。可以根据需要更改为不同的骨骼名称。
      • hipInfluence (臀部骨骼影响力)
        • 类型: Vector3
        • 默认值: new Vector3(1, 1, 1)
        • 描述: 此参数控制臀部骨骼对重定向的影响程度。Vector3 中的三个值分别代表 x、y 和 z 轴上的影响力。如果需要精细控制臀部的作用,可以调整此值。
      • scale (缩放因子)
        • 类型: number
        • 默认值: 1
        • 描述: 缩放因子,用于控制目标骨骼的缩放。你可以根据需要调整此值来改变目标骨骼的大小。
      • names (骨骼名称映射)
        • 类型: Object
        • 默认值: {}
        • 描述: 这是一个对象,通常用来映射源骨骼和目标骨骼的名称。通过这个映射,你可以将不同名称的骨骼进行对应,确保源骨骼和目标骨骼之间的正确匹配。
  • retargetClip ( target : SkeletonHelper, source : SkeletonHelper, clip : AnimationClip, options : Object ) : AnimationClip retargetClip 方法用于将源骨骼的动画剪辑(AnimationClip)重定向到目标骨骼系统中。这是 SkeletonUtils 提供的一种工具,用于调整和映射源骨骼动画到目标骨骼。以下是该方法的参数及用法说明:
    • 参数:
      • target (SkeletonHelper):
        • 描述: 目标骨骼助手,表示目标的骨骼系统(通常是一个 SkeletonHelper 对象)。你需要将源骨骼的动画重定向到这个骨骼系统上。
      • source (SkeletonHelper):
        • 描述: 源骨骼助手,表示源的骨骼系统(通常是一个 SkeletonHelper 对象)。这是包含原始动画剪辑的骨骼系统。
      • clip (AnimationClip):
        • 描述: 源骨骼系统的动画剪辑(AnimationClip),即你希望重定向到目标骨骼系统的动画剪辑。
      • options (Object):
        • 描述: 这个对象包含一些配置选项,用来定制动画剪辑重定向的过程。options 参数可以包含多个选项,具体见下文。
        • 参数表
          • fps:
            • 类型: number
            • 描述: 设置目标动画剪辑的帧率(frames per second)。由于源动画和目标动画的帧率可能不同,使用该参数可以调整目标动画的播放速度。
            • 默认值: 如果未指定,通常会使用源动画的帧率。
          • names:
            • 类型: Object
            • 描述: 用来映射源骨骼和目标骨骼的名称。这个参数允许你自定义源骨骼的名称与目标骨骼名称之间的映射关系,帮助在骨骼结构不同的情况下进行正确的动画转换。
            • 默认值: 默认情况下,如果未提供,源骨骼和目标骨骼名称将保持一致。
相关推荐
小满zs5 分钟前
Next.js第一章(入门)
前端
摇滚侠6 分钟前
CSS(层叠样式表)和SCSS(Sassy CSS)的核心区别
前端·css·scss
不爱吃糖的程序媛10 分钟前
Electron 桌面应用开发入门指南:从零开始打造 Hello World
前端·javascript·electron
Dontla16 分钟前
前端状态管理,为什么要状态管理?(React状态管理、zustand)
前端·react.js·前端框架
编程猪猪侠18 分钟前
前端根据文件后缀名智能识别文件类型的实用函数
前端
yinuo25 分钟前
基于 Git Submodule 的代码同步融合方案
前端
伶俜monster36 分钟前
大模型 “万能接口” MCP 横空出世!打破数据孤岛,重塑 AI 交互新规则
前端·mcp
你听得到1137 分钟前
肝了半个月,我用 Flutter 写了个功能强大的图片编辑器,告别image_cropper
android·前端·flutter
Macbethad1 小时前
Typora 精通指南:掌握高效 Markdown 写作的艺术
前端·macos·前端框架
F_Director1 小时前
Webpack DLL动态链接库的应用和思考
前端·webpack·性能优化