关于 threejs-procedural-creatures
面向 Three.js 程序化生物构建的技能,涵盖身体生成、语义骨架、运动与群体呈现。它强调按形态和工作负载选择表示方式,并验证状态、渲染与资源生命周期。
主要功能
- 01按工作负载选择身体表示
- 02编译程序化身体与骨架
- 03构建生物运动和支撑接触
- 04管理重复群体姿态与剔除
- 05验证渲染一致性和生命周期
适用场景
- 01生成具有特定形态的生物身体
- 02实现生物步态和支撑相对肢体
- 03呈现共享拓扑的大量生物实例
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ linegel/ threejs-complete-set-of-skill --skill threejs-procedural-creatures安装后在 Claude Code 中输入/threejs-procedural-creatures确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEagents/openai.yamlreferences/articulated-hard-shell-creatures.mdcreature-body-systems.md详细介绍
程序化生物
像编译器一样构建生物:带尺寸的规格生成稳定的身体、骨架、姿势和种群标识;运行时工作只推进选定的状态。标准路径使用 Three.js r185 WebGPURenderer、TSL、NodeMaterial 和按工作负载选择的存储。导入的蒙皮动画资源属于独立管线,而非此技能的扩展。
1. 定义身体契约
明确所请求的可观测量、投影范围的最近端与最远端、形态包络、姿势/拓扑更新频率、可见种群、目标适配器、世界单位/帧、最终输出的所有者,以及任何栖息地/支撑/水体/天气提供方。
将请求归入一个或多个分支:
| 分支 | 生物负责 |
|---|---|
| 生成式身体 | 规格、场或分段编译器、交付曲面、材质 |
| 骨架/运动 | 语义槽位、局部姿势、固定步长或解析运动、相对于支撑物的目标 |
| 重复种群 | 兼容的几何/材质标识、姿势页、包围体、剔除、LOD |
当每个所请求的可观测量都有明确的所有者、每个外部输入都注明其提供方和采样契约,并且拓扑、姿势和种群的变化机制均已明确时,此步骤即完成。
2. 选择交付表示
根据连通性、形变、复用和投影误差进行选择:
| 工作负载 | 表示方式 | 所需验证 |
|---|---|---|
| 连通性固定、姿势变化 | 一个提取的参考网格加经过验证的蒙皮 | 拓扑、权重、形变、双向曲面误差 |
| 连通性固定、形态变化受限 | 参考网格、蒙皮,可选的受限局部场修正 | 完整包络的雅可比、翻转、修正和曲面误差 |
| 部件可能合并、分裂、开放或闭合 | 有预算限制的动态提取,或明确给出不支持的结果 | 拓扑事件、更新频率、过渡和完整网格有效性 |
| 身体由明显分离的刚性板片/连杆构成 | 闭合的关节分段层级 | 闭合几何、关节间隙/限位、变换一致性 |
| 多个身体共享拓扑 | 共享几何/材质加固定姿势页 | 兼容标识、脏数据流量、包围体和可见提交 |
| 投影尺寸较小的身体 | 简化网格或朝向感知的广告牌 | 视锥范围内的轮廓误差和过渡滞回 |
拼接的胶囊/基本体外壳是场诊断手段,不能证明身体是流形。为每个范围选择一种主要表示方式,并说明它无法表示哪些特征或拓扑变化。
当每个范围都具有一种交付表示、其几何/缓存标识已定义,并且每个过渡都有物理像素误差门限、滞回/驻留时间、同时内存预算和重置操作时,此步骤即完成。
3. 编译生成的身体
当选定分支需要基于场生成的身体、提取的皮肤、蒙皮、校正、语义骨架、生物移动,或重复姿势存储时,只打开 creature-body-systems.md 中适用的章节:
- 每个选定分支都要读取 空间与状态所有权 和 规格与编译器;
- 生成身体相关工作要读取 场与混合约定 和 参考表面与校正;
- 骨架或移动相关工作要读取 姿势与移动;
- 重复群体相关工作要读取 重复群体与渲染;
- 验证时,要根据选定分支读取 完成证据。
当身体由刚性外壳或板件组成层级结构时,读取 articulated-hard-shell-creatures.md。 保持语义片段/关节 ID 稳定、表面封闭、枢轴位于父级局部空间,并让可见内容、阴影/深度、边界框和运动矢量共用一条变换路径。
在可见之前编译开销较大的工作:规格验证、拓扑、参考表面或封闭片段、权重、候选项、帧、几何体标识、材质和固定页面布局。生成实例时只验证并写入活动槽位;不会构建几何体或编译管线。
当所有图引用和槽位都能解析、CPU/TSL 一致性在适用时通过、输出表面在声明的姿势/形态范围内有效,并且每个缓存工件都能解析影响它的完整标识时,此步骤即告完成。
4. 仅在需要时构建姿势和运动
姿势始终处于生物局部空间;根运动只通过实例变换应用一次。使用稳定的种子变化和注入的模拟时间。闭式运动直接对时间采样。步态、弹簧、绳索、浮力和接触响应以固定步长推进,该步长由本地逻辑或路由的模拟阶段负责,并使用不可变的前一状态/当前状态进行呈现。参考曲面蒙皮在生物空间中应用姿势乘以逆绑定矩阵。刚性关节局部片段直接遵循其关节姿势。先插值关节旋转,再组合层级;运动矢量使用的前一呈现变换应与固定步长历史分开保存。
对于相对于支撑物的肢体:
- 在同一采样时刻/版本批量执行所需探测;
- 保留稳定的支撑物/特征标识,以及支撑物局部坐标中的落足点;
- 在支撑物切平面坐标系中生成步态初始位置和摆动弧线;
- 根据身体相对于所表示的支撑点速度的速度预测目标;
- 通过根变换的逆变换将目标转换到身体空间;
- 使用相对于尺度的可达范围/条件数门限求解 IK,并报告任何未消除的接触残差;在次级写入器之后重新检查接触,然后更新姿势边界。
当支撑、水、空气、重力、天气或物理接触参与其中时,应定义交接内容,包括单位、坐标系/原点、时间区间或采样时刻、更新频率/采样阶段、生产者/消费者/版本、作用范围/筛选条件、有效性/过期状态/误差,以及表示速率还是积分量。水面运动和材质水流是不同的通道;未提供的表示数据意味着缺失,而不是物理值为零。对帧至关重要的决策应使用解析镜像、确定性共享场,或声明了延迟/误差的批量提供器,而不是 GPU 回读。
单向视觉耦合不返回物理反作用。双向路径通过交接中指定的权威求解器发送源量/反作用量。此技能负责生物姿势和结构响应,不负责维护私有的地形、水、风、重力或接触状态。
当相同的种子/刻步/输入能复现姿势、渲染频率不会改变递归状态、相对于支撑物的漂移和肢体长度残差通过验证、所需提供器通道均存在且误差有界,并且每个姿势写入器都按确定顺序执行最终接触/限制验证(而非仅采用最后写入者规则)时,此步骤即告完成。
5. 扩展种群并仅呈现一次
在分配资源前初始化规范渲染器:
import { WebGPURenderer } from 'three/webgpu';
const renderer = new WebGPURenderer({ antialias: false });
await renderer.init();
if (renderer.backend.isWebGPUBackend !== true) {
throw new Error('WebGPU backend unavailable for the canonical creature path.');
}
- 仅在编译器/拓扑/几何/层级标识兼容时共享几何体。物种标签本身不能作为批处理键。
- 在固定容量的分页中存储生物局部姿势、根变换、边界、稳定标识、表示形式和历史代次。仅上传合并后的脏数据范围。
- 使用姿势化基本体/片段边界或经过验证的保守动画包络。提交前剔除分页和实例。
- 使用实际部件数/候选数限制着色器循环。候选评估应保留作者定义的混合祖先关系及其省略证明。
- 重复轮廓使用单次种群 ID/法线/深度边缘通道;仅在经过测量的主角分支中使用重复的等值偏移主体。
- 在可见路径和投射阴影路径中复用相同的变形后局部位置;在世界空间中计算接收阴影的查找。
- 在用于线性 uniform/存储之前,仅解码一次作者提供的 sRGB。由单一场景管线负责色调映射和输出转换。
- 在首次可见前,预编译所有正式发布所需的显示、深度/阴影、轮廓和已配置输出变体。
当种群分页的容量/生命周期有界、静态或未变化的姿势不会造成冗余递归工作、边界能正确剔除、可见/深度/阴影/运动路径使用同一已接受的姿势代次,并且最终输出转换恰由一个组件负责时,此步骤即告完成。
6. 验证表示、状态和生命周期
检查最终输出/无后处理输出以及选定的诊断信息:
body: field/normal/candidate views, topology, skin weights, segment IDs,
correction residual, inversions/intersections, silhouette
rig: slot/parent IDs, joint limits, radial frames, planted support and IK,
previous/current pose and history generation
population: page occupancy, dirty ranges, posed bounds, culling, LOD/impostor,
visible/shadow/depth/motion parity
测试固定种子重放;时间轴跳转与逐步推进;完整的姿态和形态包络;渲染卡顿;倾斜/移动的支撑面;缺失、过期或不连续的提供方数据;生成/死亡/传送/重新挂接/槽位复用;拓扑/LOD 变化;调整大小;以及释放。
报告编译器/表面数量、场值一致性和表面误差、运动漂移和收敛情况、可见/提交的页面和实例、脏数据上传字节数、场值/校正计算次数、CPU 固定步耗时、完整帧和成对边际 CPU/GPU p50/p95、峰值活动字节数、首次可见的管线事件,以及持续目标表现。
失败特征包括:将原始薄片作为流形身体交付;重命名部件会改变混合场;蒙皮权重跨越相接的肢体;辅助轴导致坐标系翻转;根变换被应用两次;步态依赖渲染 dt;支撑漂移;水体通道混淆;使用一个全局可变种群缓冲区;着色器循环无界;禁用剔除;各通道的姿态代次不一致;以及释放后资源/状态仍然存在。
当所有选定的表示、骨架/运动、种群、输出、重置、预算和释放关卡均通过时,验证才算完成;未选定的分支不得携带必需的负载或证据。
路由边界
通用变换时间线和弹簧请使用 $threejs-procedural-motion-systems,通用网格写入器请使用 $threejs-procedural-geometry,可复用场/材质坐标请使用 $threejs-procedural-fields,植物请使用 $threejs-procedural-vegetation,目标场景视觉契约请使用 $threejs-visual-validation。本技能负责程序化生物身体、语义骨架、生物运动、姿态存储和重复种群表示。导入的 glTF 动画片段、重定向和 VAT 动画属于导入资产角色管线。