Verge3D
  • 欢迎访问Verge3D中文用户手册
  • 入门指引(Getting Started)
    • 初学指南
    • 工作流程
    • 拼图工具
    • 功能特性
    • 项目结构
    • 更新版本
    • 常见问题
      • 3D文件格式
      • SolidWorks
      • Revit
    • 实用链接
  • 一般主题(General Topics)
    • 资产压缩
    • 基于HTML的用户界面
    • Facebook发布3D主题
    • AR 和VR的开发
    • Wordpress插件
    • 使用JavaScript
    • 移动浏览器测试
  • 3ds Max 艺术家指南(3ds Max Artist's Guide)
    • 3ds Max安装Verge3D​
    • 材质系统
    • 阴影
    • 物理材质
    • 透明度
    • 视口和渲染预览
  • Blender 艺术家指南(Blender Artist's Guide)
    • Blender安装Verge3D
    • 材质系统概述
    • 阴影
    • 物理材质
    • 透明度
    • 使用材质库
    • 视口预览
  • 拼图参考
    • Initialization(初始化)
    • Events(事件)
    • Selectors(选择器)
    • Objects
    • Materials
    • Animation
    • Camera
    • Scenes
    • Misc
    • Time
    • HTML
    • AR/VR
    • Sound
    • Physics
    • Post-processing
    • Dictionaries
    • Variables
    • Procedures
    • System
    • Library
  • 程序员指南(Programmer's Guide)
    • 编程基础
    • 矩阵变换
    • 动画系统
    • 创建文本
    • 绘制线条
    • 更新事物
    • 约定
    • 获取资源
  • 开发者参考(Developer Reference)
    • Animation
      • AnimationAction
      • AnimationClip
      • AnimationMixer
      • AnimationObjectGroup
      • AnimationUtils
      • KeyframeTrack
      • PropertyBinding
      • PropertyMixer
    • Animation / Tracks
      • BooleanKeyframeTrack
      • ColorKeyframeTrack
      • NumberKeyframeTrack
      • QuaternionKeyframeTrack
      • StringKeyframeTrack
      • VectorKeyframeTrack
    • Application
      • App
      • AppPuzzles
      • AppUtils
    • Audio
      • Audio
      • AudioAnalyser
      • AudioContext
      • AudioListener
      • PositionalAudio
    • Cameras
      • ArrayCamera
      • Camera
      • CubeCamera
      • OrthographicCamera
      • PerspectiveCamera
      • StereoCamera
    • Constants
      • Animation
      • Core
      • CustomBlendingEquation
      • DrawModes
      • DrawModes
      • Materials
      • Renderer
      • Textures
    • Constraints
      • ChildOfConstraint
      • Constraint
      • CopyLocationConstraint
      • CopyRotationConstraint
      • CopyScaleConstraint
      • FloorConstraint
      • LimitLocationConstraint
      • LimitRotationConstraint
      • LimitScaleConstraint
      • LockedTrackConstraint
      • TargetConstraint
      • TrackToConstraint
    • 开发者参考
      • Controls
      • Core
      • Core / BufferAttributes
      • Deprecated
      • Extras
      • Extras / Core
      • Extras / Curves
      • Extras / Objects
      • Geometries
      • Helpers
      • Lights
      • Lights / Shadows
      • Loaders
      • Loaders / Managers
      • Materials
      • Math
      • Math / Interpolants
      • Objects
        • Annotation
        • AnnotationControl
        • Bone
        • Group
        • Line
        • LineLoop
        • LineSegments
        • LOD
        • Mesh Points
        • Skeleton
        • SkinnedMesh
        • Sprite
      • Renderers
        • RenderUtils
        • WebGLRenderer
        • WebGLRenderTarget
        • WebGLRenderTargetCube
      • Renderers / Shaders
        • ShaderChunk
        • ShaderLib
        • UniformsLib
        • UniformsUtils
      • Scenes
        • Fog
        • FogExp2
        • Scene
        • SceneBackground
      • Textures
        • CanvasTexture
        • CompressedTexture
        • CubeTexture
        • DataTexture
        • DataTexture3D
        • DepthTexture
        • Texture
        • VideoTexture
  • EXAMPLES
    • 案例
  • MISC
    • 杂项
Powered by GitBook
On this page
  • 概观
  • 例
  1. 程序员指南(Programmer's Guide)

动画系统

Animation System 待校订

Previous矩阵变换Next创建文本

Last updated 6 years ago

概观

在Verge3D动画系统中,您可以为模型的各种属性设置动画:蒙皮和装配模型的骨骼, 变形目标,不同材质属性(颜色,不透明度,布尔值),可见性和变换。动画属性可以淡入,淡出,交叉淡化和扭曲。可以独立地改变同一对象以及不同对象上的不同同时动画的权重和时间尺度。可以同步在相同和不同对象上的各种动画。 为了在一个同类系统中实现所有这一切,Verge3D动画系统 (注意过时的信息!),它现在有一个类似于Unity /虚幻引擎4的架构。这个页面简要概述了系统的主要组件以及它们如何协同工作。

动画片段

如果您已成功导入动画3D对象(如果它具有骨骼或变形目标或两者都无关紧要) - 例如,使用Blender导出器将其从Blender导出并使用GLTFLoader将其加载到Verge3D场景中,其中一个几何体加载网格的属性应该是一个名为“animations”的数组,其中包含此模型的AnimationClips(请参阅下面的可能加载器列表)。 每个AnimationClip通常保存对象的某个活动的数据。例如,如果网格是一个角色,则可能有一个动作剪辑用于步行循环,第二个用于跳跃,第三个用于回避等等。

关键帧轨道

在这样的AnimationClip内部,每个动画属性的数据存储在单独的KeyframeTrack中。假设一个角色对象有一个骨架,一个关键帧轨道可以存储下臂骨骼随时间的位置变化的数据,一个不同的轨道用于相同骨骼的旋转变化的数据,第三个是轨道位置,旋转或缩放另一个骨头,等等。应该清楚的是,AnimationClip可以由许多这样的轨道组成。 假设模型具有变形目标(例如,一个变形目标显示友好的面部,另一个显示愤怒的面部),每个轨道保存有关影响的信息 在剪辑的执行期间某个变形目标的变化。

动画混音器

存储的数据仅构成动画的基础 - 实际播放由AnimationMixer控制。你可以想象这不仅仅是一个动画播放器,而是一个模拟硬件,如真正的调音台控制台,它可以同时控制几个动画,混合和合并它们。

动画动作

该AnimationMixer本身只有很少的(一般)属性和方法,因为它可以通过控制AnimationActions。通过配置 AnimationAction,您可以确定某个AnimationClip何时应在其中一个混音器上播放,暂停或停止,是否必须重复剪辑,是否应该使用淡入淡出或时间缩放,以及其他的东西,例如交叉淡化或同步。

动画对象组

如果希望一组对象接收共享动画状态,则可以使用 AnimationObjectGroup。

支持的格式和加载器

请注意,并非所有模型格式都包含动画(特别是OBJ),并且只有一些Verge3D加载器支持AnimationClip序列。有几个是做 支持这种动画类型:

  • v3d.JSONLoader

  • v3d.ObjectLoader

  • v3d.BVHLoader

  • v3d.ColladaLoader

  • v3d.FBXLoader

  • v3d.GLTFLoader

  • v3d.MMDLoader

  • v3d.SEA3DLoader

请注意,3ds max和Maya当前无法将多个动画(即不在同一时间轴上的动画)直接导出到单个文件。

例

var mesh; // Create an AnimationMixer, and get the list of AnimationClip instances var mixer = new v3d.AnimationMixer(mesh); var clips = mesh.animations; // Update the mixer on each frame function update () { mixer.update(deltaSeconds); } // Play a specific animation var clip = v3d.AnimationClip.findByName(clips, 'dance'); var action = mixer.clipAction(clip); action.play(); // Play all animations clips.forEach(function(clip) { mixer.clipAction(clip).play(); });

在2015年彻底改变了