Hilo3d动画系统:骨骼动画与状态机使用指南
Hilo3d动画系统骨骼动画与状态机使用指南【免费下载链接】Hilo3d A modern Web graphics engine for production 2D and 3D experiences.项目地址: https://gitcode.com/gh_mirrors/hi/Hilo3dHilo3d是一个现代化的Web图形引擎专为生产级2D和3D体验设计。其强大的动画系统支持骨骼动画和状态机让开发者能够轻松创建流畅、复杂的角色动画和场景交互效果。本文将详细介绍如何使用Hilo3d的动画系统从基础概念到实际应用帮助你快速掌握动画制作的核心技能。动画系统核心组件Hilo3d动画系统由多个核心类构成它们协同工作以实现复杂的动画效果。这些组件包括Animation、AnimationStates、Skeleton和SkinnedMesh分别负责动画控制、状态管理、骨骼结构和蒙皮渲染。Animation类动画控制器Animation类是动画系统的核心控制器负责管理动画的播放、暂停、停止和循环等基本操作。它通过animStatesList属性维护一组动画状态每个状态对应一个具体的动画片段。const anim new Hilo3d.Animation({ animStatesList: [/* 动画状态列表 */], loop: Infinity, // 无限循环 timeScale: 1.0 // 播放速度 }); anim.rootNode targetNode; // 设置动画作用的根节点 anim.play(); // 开始播放动画Animation类提供了丰富的控制方法如play()、pause()、stop()和resume()以及事件监听机制方便开发者对动画过程进行精细控制。AnimationStates类动画状态管理AnimationStates类用于定义单个动画属性的变化过程如位置、旋转、缩放等。它包含关键帧时间点keyTime和对应状态值states并支持线性插值LINEAR、阶梯插值STEP和三次样条插值CUBICSPLINE等多种插值方式。new Hilo3d.AnimationStates({ nodeName: targetNode, // 目标节点名称 type: Translation, // 动画类型平移 interpolationType: LINEAR, // 插值方式线性 keyTime: [0, 1, 2], // 关键帧时间点 states: [ [0, 0, 0], // 时间0时的位置 [1, 0, 0], // 时间1时的位置 [0, 1, 0] // 时间2时的位置 ] });通过组合多个AnimationStates实例可以实现复杂的动画效果如同时控制位置、旋转和缩放。骨骼动画基础骨骼动画是实现角色动画的核心技术它通过骨骼结构控制模型的变形使动画更加自然和逼真。Hilo3d中的骨骼动画主要由Skeleton骨架和SkinnedMesh蒙皮网格两个类实现。Skeleton类骨架结构Skeleton类定义了骨骼的层次结构包括关节节点列表jointNodeList、关节名称jointNames和 inverse bind 矩阵inverseBindMatrices。这些数据通常从外部模型文件如glTF加载也可以手动创建。const skeleton new Hilo3d.Skeleton({ jointNames: [root, arm, hand], // 关节名称列表 inverseBindMatrices: [/* 逆绑定矩阵数组 */], rootNode: rootJoint // 根关节节点 });骨架的逆绑定矩阵用于将顶点从模型空间转换到骨骼空间是实现蒙皮效果的关键。SkinnedMesh类蒙皮网格SkinnedMesh类将几何体与骨架关联实现骨骼驱动的网格变形。它通过skeleton属性引用骨架并在渲染时根据骨骼姿态计算顶点位置。const skinnedMesh new Hilo3d.SkinnedMesh({ geometry: characterGeometry, // 角色几何体 material: characterMaterial, // 角色材质 skeleton: skeleton // 关联的骨架 });SkinnedMesh会自动计算每个顶点受骨骼影响的权重并根据骨骼变换更新顶点位置从而实现平滑的蒙皮动画效果。上图展示了一个使用骨骼动画实现的飞蛾角色动画序列通过控制骨骼的旋转和位移使飞蛾的翅膀呈现出自然的扇动效果。状态机动画控制Hilo3d的动画系统支持状态机控制允许开发者通过AnimationStates.registerStateHandler方法注册自定义状态处理函数实现复杂的动画逻辑和状态切换。注册自定义动画状态以下示例演示如何注册一个自定义的UV动画状态实现纹理坐标的动态偏移Hilo3d.AnimationStates.registerStateHandler(UV_Translate, (node, state) { const material node.material; if (material) { material.offset new Hilo3d.Vector2(state[0], state[1]); } }); // 使用自定义状态 new Hilo3d.AnimationStates({ nodeName: targetNode, type: UV_Translate, // 使用自定义状态类型 keyTime: [0, 1], states: [[0, 0], [1, 0]] // UV偏移值 });通过自定义状态处理函数开发者可以实现各种复杂的动画效果如材质参数动画、粒子系统控制等。动画片段管理Animation类支持动画片段Clip管理可以将多个动画片段组合到一个动画实例中并通过名称进行播放控制// 添加动画片段 anim.addClip(walk, 0, 2, walkAnimStates); anim.addClip(run, 2, 4, runAnimStates); // 播放指定片段 anim.play(walk); // 一段时间后切换到跑步动画 setTimeout(() anim.play(run), 2000);这种方式非常适合实现角色的各种动作如走、跑、跳之间的无缝切换。实际应用示例下面通过一个简单的示例展示如何使用Hilo3d创建一个基本的骨骼动画创建骨架和蒙皮网格const skeleton new Hilo3d.Skeleton({/* 骨架参数 */}); const skinnedMesh new Hilo3d.SkinnedMesh({ geometry: new Hilo3d.BoxGeometry(), material: new Hilo3d.PBRMaterial(), skeleton: skeleton }); stage.addChild(skinnedMesh);定义动画状态const animStates new Hilo3d.AnimationStates({ nodeName: skinnedMesh.name, type: Rotation, keyTime: [0, 1, 2], states: [ [0, 0, 0], [Math.PI/2, 0, 0], [Math.PI, 0, 0] ] });创建并播放动画const anim new Hilo3d.Animation({ animStatesList: [animStates], loop: Infinity }); anim.rootNode skinnedMesh; anim.play();通过这个示例你可以快速了解Hilo3d动画系统的基本使用流程。实际应用中可以结合外部模型加载、复杂状态机控制等功能实现更加丰富的动画效果。总结Hilo3d提供了强大而灵活的动画系统通过Animation、AnimationStates、Skeleton和SkinnedMesh等核心类支持从简单的属性动画到复杂的骨骼动画。无论是2D精灵动画还是3D角色动画Hilo3d都能满足你的需求。通过本文的介绍你已经掌握了Hilo3d动画系统的基本概念和使用方法。接下来你可以深入学习src/animation/Animation.ts和src/core/Skeleton.ts等源代码探索更多高级功能如动画混合、骨骼约束等为你的Web图形应用添加更加生动的动画效果。Hilo3d动画系统的灵活性和性能使其成为开发生产级Web图形应用的理想选择。无论你是游戏开发者、创意设计师还是Web前端工程师都能通过Hilo3d轻松实现令人惊艳的动画效果。【免费下载链接】Hilo3d A modern Web graphics engine for production 2D and 3D experiences.项目地址: https://gitcode.com/gh_mirrors/hi/Hilo3d创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Wan2.2 MoE模型:2026年最便宜视频生成API实践指南

Wan2.2 MoE模型:2026年最便宜视频生成API实践指南

# Wan2.2 MoE模型:2026年最便宜视频生成API实践指南## 背景:视频生成成本困境与MoE破局2025-2026年,视频生成模型从“可玩”迈入“可用”阶段,但高昂的推理成本始终是开发者落地的拦路虎。以Sora、Pika等模型为例,单次…

2026/10/7 21:36:37 阅读更多 →
Glass浏览器实测:透明悬浮窗口告别来回切换

Glass浏览器实测:透明悬浮窗口告别来回切换

Glass浏览器实测:透明悬浮窗口告别来回切换 【免费下载链接】glass-browser A floating, always-on-top, transparent browser for Windows. 项目地址: https://gitcode.com/gh_mirrors/gl/glass-browser 在 Windows 上,Glass Browser 是一款把&q…

2026/10/13 16:13:41 阅读更多 →
Windows 总在你专注时锁屏?NoSleep:180KB 的免费防休眠答案

Windows 总在你专注时锁屏?NoSleep:180KB 的免费防休眠答案

Windows 总在你专注时锁屏?NoSleep:180KB 的免费防休眠答案 【免费下载链接】NoSleep Lightweight Windows utility to prevent screen locking 项目地址: https://gitcode.com/gh_mirrors/nos/NoSleep 屏幕又暗了。如果你曾在深夜渲染到 87% 时、…

2026/10/13 13:33:00 阅读更多 →

最新新闻

智诺方AI|期刊论文导师意见修改,分段改写搞定查重和AIGC

智诺方AI|期刊论文导师意见修改,分段改写搞定查重和AIGC

写好「导师意见修改」,再谈降重与降 AIGC 先把研究内容写清楚,再处理重复率与 AI 痕迹,顺序不能反。导师意见修改最怕「改了表述、丢了要求」。意见若被 AI 一键稀释,返回稿看起来更顺,却没回答导师真正卡住的点。 在期…

2026/10/15 3:11:37 阅读更多 →
Large Language Model Powered Automated Modeling and Optimization of Active Distribution Network D...

Large Language Model Powered Automated Modeling and Optimization of Active Distribution Network D...

文章主要内容总结 本文针对主动配电网(ADNs)调度问题,提出了一种基于大型语言模型(LLM)的自动化建模与优化方法。随着分布式能源(DERs)的大量接入,ADNs调度的复杂性显著提升,但新加入的运营商(如配电网聚合商、虚拟电厂管理者等)往往缺乏电力系统运行、建模、优化及…

2026/10/15 3:11:37 阅读更多 →
GPT-4o 等四个模型明年1月下架API,迁移前先做这几件事

GPT-4o 等四个模型明年1月下架API,迁移前先做这几件事

10 月 14 日,OpenAI 给开发者发了通知:GPT-4o、GPT-4o mini、GPT-4.1、GPT-4.1 mini 这四个模型,将在 2027 年 1 月 14 日从 API 下架,基于它们做的微调版本同一天停用。算下来,离下线还有大概三个月。 这里有个容易忽…

2026/10/15 3:11:37 阅读更多 →
Can Small-Scale Data Poisoning Exacerbate Dialect-Linked Biases in Large Language Models?

Can Small-Scale Data Poisoning Exacerbate Dialect-Linked Biases in Large Language Models?

文章主要内容总结 本文研究了小规模数据投毒是否会加剧大型语言模型(LLMs)中与方言相关的偏见,重点对比了非洲裔美国白话英语(AAVE)和标准美国英语(SAE)的差异。研究使用小尺度和中尺度的LLaMA模型,发现即使暴露于极少量的投毒数据,模型对AAVE输入的毒性输出也会显著…

2026/10/15 3:11:37 阅读更多 →
Improving the Performance of Sequential Recommendation Systems with an Extended Large Language Model

Improving the Performance of Sequential Recommendation Systems with an Extended Large Language Model

文章主要内容总结 本文聚焦于大型语言模型(LLMs)在序列推荐系统中的应用,提出通过在LlamaRec框架中用Llama3替换Llama2来提升推荐性能。研究保持LlamaRec的原有结构(包括检索器和排序器的两阶段推荐流程),仅更换排序器中的LLM,并通过统一随机种子、相同输入数据等确保实…

2026/10/15 3:11:37 阅读更多 →
Apereo CAS 服务注册表自动初始化(Service Registry Initialization)实战指南

Apereo CAS 服务注册表自动初始化(Service Registry Initialization)实战指南

后端认证鉴权单点登录 【免费下载链接】cas Apereo CAS - Identity & Single Sign On for all earthlings and beyond. 项目地址: https://gitcode.com/gh_mirrors/ca/cas 点击查看 免费下载 导读 Apereo CAS 在启动时会根据配置自动将 classpath 上的默认 JS…

2026/10/15 3:10:36 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →