mcpField
T
threejs-procedural-creatures

threejs-procedural-creatures

github.com/linegel创意与媒体11132 次安装5 周前更新
代码仓库

关于 threejs-procedural-creatures

面向 Three.js 程序化生物构建的技能,涵盖身体生成、语义骨架、运动与群体呈现。它强调按形态和工作负载选择表示方式,并验证状态、渲染与资源生命周期。

主要功能

  1. 01按工作负载选择身体表示
  2. 02编译程序化身体与骨架
  3. 03构建生物运动和支撑接触
  4. 04管理重复群体姿态与剔除
  5. 05验证渲染一致性和生命周期

适用场景

  1. 01生成具有特定形态的生物身体
  2. 02实现生物步态和支撑相对肢体
  3. 03呈现共享拓扑的大量生物实例

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/linegel/threejs-complete-set-of-skill --skill threejs-procedural-creatures

安装后在 Claude Code 中输入/threejs-procedural-creatures确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
agents/
openai.yaml
references/
articulated-hard-shell-creatures.md
creature-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. 仅在需要时构建姿势和运动

姿势始终处于生物局部空间;根运动只通过实例变换应用一次。使用稳定的种子变化和注入的模拟时间。闭式运动直接对时间采样。步态、弹簧、绳索、浮力和接触响应以固定步长推进,该步长由本地逻辑或路由的模拟阶段负责,并使用不可变的前一状态/当前状态进行呈现。参考曲面蒙皮在生物空间中应用姿势乘以逆绑定矩阵。刚性关节局部片段直接遵循其关节姿势。先插值关节旋转,再组合层级;运动矢量使用的前一呈现变换应与固定步长历史分开保存。

对于相对于支撑物的肢体:

  1. 在同一采样时刻/版本批量执行所需探测;
  2. 保留稳定的支撑物/特征标识,以及支撑物局部坐标中的落足点;
  3. 在支撑物切平面坐标系中生成步态初始位置和摆动弧线;
  4. 根据身体相对于所表示的支撑点速度的速度预测目标;
  5. 通过根变换的逆变换将目标转换到身体空间;
  6. 使用相对于尺度的可达范围/条件数门限求解 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 动画属于导入资产角色管线。

评论

支持 Markdown