threejs关键帧动画播放(拖动任意时间状态)

2023-12-19

参考资料: threejs中文网

threejs qq交流群:814702116

动画播放(拖动任意时间状态)

如果你想了解,关键帧动画在特定时间段播放,或者把动画定位在时间轴上任何一个时刻,或者借助UI拖动条,拖动查看关键帧任何时刻的状态,可以学习本节课。

控制动画播放特定时间段

AnimationClip参数2设置为6,执行 AnimationAction.play() ,默认播放0~6秒之间的关键帧动画。AnimationClip参数2的值会作为自身 .duration 属性的值。

const clip = new THREE.AnimationClip("test", 6, [posKF, colorKF]);
console.log('clip.duration',clip.duration);

从时间轴上选择时间段播放动画,开始时刻 AnimationAction.time ,结束时刻 AnimationClip.duration

//AnimationAction设置开始播放时间:从1秒时刻对应动画开始播放
clipAction.time = 1; 
//AnimationClip设置播放结束时间:到5秒时刻对应的动画状态停止
clip.duration = 5;

注意 .loop .clampWhenFinished 对播放效果的影响,如果需要上面代码完全起作用,要设置非循环模式,同时动画播放完,物体停留在结束状态,而不是回到开始状态。

//不循环播放
clipAction.loop = THREE.LoopOnce; 
// 物体状态停留在动画结束的时候
clipAction.clampWhenFinished=true;

查看时间轴上任意时间动画状态

把动画设置为暂停状态,然后你可以通过 AnimationAction.time 把动画定格在时间轴上任何位置。

//在暂停情况下,设置.time属性,把动画定位在任意时刻
clipAction.paused = true;
clipAction.time = 1;//物体状态为动画1秒对应状态
clipAction.time = 3;//物体状态为动画3秒对应状态

拖动条拖动显示动画任意时刻模型状态

默认是播放的,可以预先暂停,再通过拖动条控制。

//在暂停情况下,设置.time属性,把动画定位在任意时刻
clipAction.paused = true;

gui辅助快速创建一个可交互拖动条,调整模型停留在任何选定时间点状态。实际开发时候,你可以通过vue或react的UI组件库实现拖动条。

import {GUI} from 'three/addons/libs/lil-gui.module.min.js';
const gui = new GUI(); //创建GUI对象
gui.add(clipAction, 'time', 0, 6);

设置步长

gui.add(clipAction, 'time', 0, 6).step(0.1);

动画下一步状态

//在暂停情况下,设置.time属性,把动画定位在任意时刻
clipAction.paused = true;

下一步按钮

<div id="bu" class="bu">下一步</div>

点击按钮,模型调整到time累加0.1秒对应的动画状态。

const bu = document.getElementById('bu');
bu.addEventListener('click', function () {
  clipAction.time += 0.1; 
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

threejs关键帧动画播放(拖动任意时间状态) 的相关文章

  • OBJLoader 的异步问题 - 等待 XHR 完成加载

    如何使 OBJLoader 简单地返回对象而不是将其添加到场景中 我遇到了同步问题 我的代码没有等待 XHR 请求完成 从而引发错误 以下示例显示了该问题 var loader new THREE OBJLoader return a me
  • Threejs 变换矩阵排序

    我想知道 Threejs 如何对多个矩阵进行排序 例如 var mesh new THREE Mesh geometry material mesh position set 0 20 0 T transform matrix mesh r
  • 使用 OrbitControls 时锁定 x 轴旋转 - Three.js

    使用 OrbitControls 时锁定 x 轴旋转是否可行 目前我有一个挂在绳子上的圣诞星的对象模型 我希望它仅水平旋转 对于您的 OrbitControls 实例集 controls minPolarAngle Math PI 2 co
  • 在 Three.js 中针对“子场景”进行光线投射

    因此 我正在使用 Three js 示例中的 webgl interactive cubes html 并且我有一个相对简单的问题 是否可以测试光线与对象的子对象的相交 例如 如果我做类似的事情 for var i 0 i lt 2000
  • requestAnimationFrame 仅被调用一次

    我正在尝试在 Ionic 2 应用程序中使用 ThreeJS 实现非常基本的动画 基本上是尝试旋转一个立方体 但立方体没有旋转 因为 requestAnimationFrame 仅在渲染循环内执行一次 I m able to see onl
  • 为什么音频可视化直播无法在移动设备/Safari 上运行?

    我正在尝试基于 Three js 示例制作音频直播可视化工具 https trijs org examples q visua webaudio visualizer https threejs org examples q visua w
  • 如何将 SketchUp 模型导出到 Three.js?

    我通过谷歌创建了一个模型SketchUp 我想将其导出到three js节省一些时间 因为我想使用SketchUp比three js 那么有人可以告诉我该怎么做吗 非常感谢 您可以从 SketcUp 导出 collada DAE 然后使用
  • THREE.JS 加载 STL 网格数组

    因此 我有一个数据库 其中包含文件引用列以及对其所需的子 STL 文件的任何引用 我可以将一两个模型加载到 THREE js 查看器中 因此所有这些都可以正常工作 但是当我加载四个左右的数组时 事情开始变得毛茸茸的 分配的网格 ID 开始变
  • Three.js - 如何更新 arrowHelper?

    我正在尝试更新 arrowHelper 我尝试过操作箭头对象线中的顶点 设置所有内容dynamic true等等 但我似乎能做到的唯一方法就是删除旧线并绘制新线 有没有办法更新 arrowHelper 因此 您无法通过更改用于创建对象的值来
  • 从数组 THREE.js 创建纹理

    我正在研究地形生成器 但我不知道如何处理颜色 我希望能够生成一张占据整个 PlaneGeometry 的图像 我的问题是如何根据我的高度图创建一个覆盖整个 PlaneGeometry 没有环绕 的单个图像 我可以想到一种方法 但我不确定它是
  • 给定 3D 空间中的一条线,如何找到从它到一点的角度?

    我在 3D 空间中有两组点 我想画一条穿过两组点的中心的线 然后找到从该线到每个点的角度 从那里开始 我将根据两个角度的接近程度来确定两组中的匹配点 我知道如何找到每组点的中心 只需将它们平均在一起 并且我知道如何将它们匹配 甚至考虑到它们
  • FontLoader 和 TextGeometry 未在 Threejs 中正确导入

    我正在尝试在 BoxGeometry 侧面的前 右 左和顶部添加 3D 文本 我实现了这个代码如下 loadFont gt const loader new THREE FontLoader loader load https threej
  • 在 React 中渲染 Three.js 元素?

    我正在尝试制作一个渲染 Three js 场景的 React 组件 但是 每当我尝试安装组件而不是看到正在渲染的任何类型的场景时 我只看到文本 object HTMLCanvasElement 正在显示 这是我的组件 import Reac
  • 重复凹凸贴图

    我正在尝试使用 Three js r55 将凹凸贴图应用到平面上 以创建一个模糊的感觉表面 这是我的代码 var mapHeight THREE ImageUtils loadTexture images felt png mapHeigh
  • 三.js Raycaster intersectObjects

    我正在尝试修改这个例子 https github com timoxley threejs blob master examples webgl morphtargets md2 control html来自 Three js 通过鼠标点击
  • 无法让 raycaster.intersectObjects() 从远处返回相交的对象

    我有一个包含几个随机数的散点图Sprite用作数据点的对象 我想检测鼠标指针 光标 和Sprite对象 我用来检测交叉点的设置如下 var projector new THREE Projector window addEventListe
  • Three.js 光线投射器可以与组相交吗?

    我想知道我的光线投射器是否正在查看我已加载的 OBJ 由于从 Cinema4D 导出的方式 我相信 OBJ 是一个具有 3 个子级的 THREE Group 而不是 THREE Object 我可以更改我的 raycaster 代码行来查找
  • ThreeJS bufferGeometry 位置属性在应用翻译时不会更新

    我使用 STLLoader 将 stl 加载到返回 BufferGeometry 的 ThreeJS 场景中 然后我用了 myMesh position set x y z myMesh rotation setFromQuaternion
  • (A 框架)本地 gltf 不会加载;无法读取未定义的属性“切片”

    我从A型框架学校 https aframe io aframe school 11其中加载了 gltf 模型 然后我从 Khronos 加载了示例模型 this box https github com KhronosGroup glTF
  • 在 Three.js 中从 Web Worker 加载纹理

    当将大纹理图像应用到网格上一段明显的时间时 Three js 会锁定浏览器的主线程 让我们考虑以下示例 var texLoader new THREE TextureLoader texLoader load someLargeTextur

随机推荐

  • 2023年30米分辨率土地利用遥感监测数据

    改革开放以来 中国经济的快速发展对土地利用模式产生了深刻的影响 同时 中国又具有复杂的自然环境背景和广阔的陆地面积 其土地利用变化不仅对国家发展 也对全球环境变化产生了深刻的影响 为了恢复和重建我国土地利用变化的现代过程 更好地预测 预报土
  • 请解释Nginx代理中的正向代理和反向代理

    正向代理 Forward Proxy 和反向代理 Reverse Proxy 是Nginx代理模式中的两种主要类型 正向代理 Forward Proxy 是一种代理服务器 它允许客户端 用户 通过它访问远程服务器 在这种模式下 客户端发送的
  • 讲解module ‘tensorflow‘ has no attribute ‘Session‘

    目录 讲解module tensorflow has no attribute Session 错误原因 解决方案 总结 讲解module tensorflow has no attribute Session 在使用TensorFlow进
  • 广州软件第三方测试报告需要盖CNAS\CMA吗?怎么取费?

    CNAS CMA资质 1 CMA资质标识 根据报告接收方要求 第三方测试报告上是否加盖CMA标识 第三方测试机构执行标准为GB T25000 51和GB T25000 10标准 2 CNAS标识 ILAC MRA国际互认标识 通常第三方测试
  • SDN前沿技术【SMaRT-5G项目】

    目录 引言 节能方法 快速了解投资回报率 ROI ONF SMaRT 5G Initiative RAN 能量优化 方法 电池开 关方法 MIMO 睡眠和 RF 通道打开 关闭 高级睡眠模式 ASM RAN节能解决方案的
  • 【最新】2023年30米分辨率土地利用遥感监测数据

    改革开放以来 中国经济的快速发展对土地利用模式产生了深刻的影响 同时 中国又具有复杂的自然环境背景和广阔的陆地面积 其土地利用变化不仅对国家发展 也对全球环境变化产生了深刻的影响 为了恢复和重建我国土地利用变化的现代过程 更好地预测 预报土
  • Dubbo 注册中心挂了,consumer 还能不能调用 provider?

    在 Dubbo 中 如果注册中心 如 Zookeeper Nacos 等 出现故障 消费者 consumer 仍然可以调用提供者 provider 的服务 但需要满足以下条件 消费者和提供者之间的通信配置正确 消费者需要知道提供者的地址和端
  • Clion远程开发无法解析头文件,但是代码可以正常编译运行

    问题 当我在使用Clion进行远程开发时 需要用到Opencv库 我首先在CMakeLists txt添加了opencv库 如下 find package OpenCV REQUIRED INCLUDE DIRECTORIES OpenCV
  • 天眼情报分析——问题收集

    分为几类 一 代码实现问题 1 将两个字符串交替合并 这段代码错在逻辑错误 由于w1此时小于w2剩下的部分应该是w2而不是w1 我分析这位星友错误的原因应该是对底层逻辑实现没有深入理解 学到了不少 多多交流是好事 二 如何使用GitHub
  • NFS原理详解

    一 NFS介绍 1 什么是NFS 它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录 NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中 在本地的NFS客户端的机器看来 NFS服务器端共享
  • Java是怎么运行起来的?深入理解Java虚拟机

    介绍Java的工作原理和JVM的内部结构 微信搜索关注 Java学研大本营 Java虚拟机 JVM 是一个运行时环境 可以执行用Java编程语言编写的程序 Java语言是一种高级语言 它通过抽象和封装的机制 让开发者可以专注于业务逻辑和功能
  • 瑞芯微 rk3568的npu使用,部署unet网络

    文章目录 rk3568 1 6 0 1 在任一个ubuntu系统上安装RKNN Toolkit2 1 1 下载 1 2 安装 2 在机器端 板端 查看 RKNPU2的驱动 3 RKNN使用说明
  • Linux Centos 配置 Docker 国内镜像加速

    在使用 Docker 进行容器化部署时 由于国外的 Docker 镜像源速度较慢 我们可以配置 Docker 使用国内的镜像加速器 以提高下载和部署的效率 本文将介绍如何在 CentOS 系统上配置 Docker 使用国内镜像加速 步骤一
  • 南大通用的时间类型的使用解析

    示例sql create table TCK DATE TEXT id INTEGER not null date date DEFAULT TODAY
  • three.js关键帧动画KeyframeTrack、AnimationClip、AnimationMixer

    参考资料 threejs中文网 threejs qq交流群 814702116 关键帧动画 打开课件案例源码 你可以看到物体从一个位置移动到另一个位置的动画效果 移动过程中也出现过颜色变化 课件源码效果具体描述 就是 0 3秒 物体逐渐从坐
  • Android驱动并发与竞争

    下面介绍 原子操作 atomic t 自旋锁 spinlock t 信号量 semaphore 互斥体 mutex Android Linux是一个多任务操作系统 肯定会存在多个任务共同操作同一段内存或者设备的情况 多个任务甚至中断都能访问
  • IPQ4019 IPQ4029 IPQ5018 IPQ8072 IPQ6010 Wallys OpenWRT Compatible Routerboard Wallys|Industrial

    IPQ4019 IPQ4029 IPQ5018 IPQ8072 IPQ6010 Wallys OpenWRT Compatible Routerboard Wallys Industrial Commercial use Wallys Un
  • 机器学习之迁移学习(Transfer Learning)

    概念 迁移学习 Transfer Learning 是一种机器学习方法 其核心思想是将从一个任务中学到的知识应用到另一个相关任务中 传统的机器学习模型通常是从头开始训练 使用特定于任务的数据集 而迁移学习则通过利用已经在一个任务上学到的知识
  • 多线程案例:银行取钱

    不安全取钱 两个人去银行取钱 账户 银行取钱 给账户上锁 public class UnsafeBank public static void main String args 账户 Account3 account new Account
  • threejs关键帧动画播放(拖动任意时间状态)

    参考资料 threejs中文网 threejs qq交流群 814702116 动画播放 拖动任意时间状态 如果你想了解 关键帧动画在特定时间段播放 或者把动画定位在时间轴上任何一个时刻 或者借助UI拖动条 拖动查看关键帧任何时刻的状态 可