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
            • 描述: 用来映射源骨骼和目标骨骼的名称。这个参数允许你自定义源骨骼的名称与目标骨骼名称之间的映射关系,帮助在骨骼结构不同的情况下进行正确的动画转换。
            • 默认值: 默认情况下,如果未提供,源骨骼和目标骨骼名称将保持一致。
相关推荐
weixin_382395235 小时前
为小工厂量身打造:本地部署的物料管理系统带缺料计算
前端·制造
__zRainy__5 小时前
解决pnpm v10+不自动构建
前端·pnpm·工程化
猫猫不是喵喵.6 小时前
Vue3 Props 属性
前端·javascript·vue.js
醉城夜风~7 小时前
CSS元素显示模式(display)
前端·css
AI大模型-小华8 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
做前端的娜娜子10 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅10 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
jarvisuni10 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
卷福同学12 小时前
AI编程出海第二步:验证关键词能否做站
前端·人工智能·后端