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
            • 描述: 用来映射源骨骼和目标骨骼的名称。这个参数允许你自定义源骨骼的名称与目标骨骼名称之间的映射关系,帮助在骨骼结构不同的情况下进行正确的动画转换。
            • 默认值: 默认情况下,如果未提供,源骨骼和目标骨骼名称将保持一致。
相关推荐
你的人类朋友1 小时前
【Node&Vue】什么是ECMAScript?
前端·javascript·后端
路灯下的光1 小时前
用scss设计一下系统主题有什么方案吗
前端·css·scss
l_tian_tian_1 小时前
SpringClound——网关、服务保护和分布式事务
linux·服务器·前端
一只小风华~2 小时前
CSS @media 媒体查询
前端·css·媒体
shix .2 小时前
最近 | 黄淮教务 | 小工具合集
前端·javascript
John_ToDebug3 小时前
Chrome 内置扩展 vs WebUI:浏览器内核开发中的选择与实践
前端·c++·chrome
烛阴3 小时前
解锁动态键:TypeScript 索引签名完全指南
前端·javascript·typescript
上单带刀不带妹4 小时前
ES6 中的 Proxy 全面讲解
前端·ecmascript·es6·proxy
11054654015 小时前
37、需求预测与库存优化 (快消品) - /供应链管理组件/fmcg-inventory-optimization
前端·信息可视化·数据分析·js
nunumaymax5 小时前
在图片没有加载完成时设置默认图片
前端