@threenative/procedural-animals

Optional bake-first wolf content. The build entry pins Procedural Animals at c95ae49346aa8e140a924376cec6cf0073d99512 and Node 20.19.6. Runtime imports contain no generator, worker or Node dependency. Frozen installed browser/Linux correctness runs passed; paired frame budgets and fifty GPU lifecycle cycles remain unqualified. See the owning PRD.

The installed engine MCP discovers this optional package through engine_search_capabilities and engine_capability_detail, using the ordinary generated capability manifest. Runtime capabilities are createAnimalActor, createAnimalGeometry, loadAnimalBake and parseAnimalBake from @threenative/procedural-animals. Build capabilities are animalBakePass, bakeWolf and bakeWolfToFile from @threenative/procedural-animals/build. Each entry reports the optional dependency, an example and its constraints.

At build time, call bakeWolfToFile({ seed: 7, tier: "crowd" }, destination) from @threenative/procedural-animals/build, then pass animalBakePass() to the normal @threenative/assets compiler. High and crowd bakes share individual parameters. Each source is validated before a same-directory atomic rename; the asset compiler owns the hashed manifest. Timing statistics are excluded from deterministic bytes.

At runtime, loadAnimalBake(ctx.assets, logicalPath, { signal }) resolves the cooked file and validates the complete PANM payload before constructing resources. Limits: 64 MiB, 250,000 vertices, 1.5 million indices and 256 bones. Unknown revisions, malformed offsets/indices, non-finite values and unnormalized weights fail by name. The corruption checksum is not an authenticity signature.

createAnimalActor(bake, { motion, material, ground }) owns instance geometry, pose, bounds and lifetime. Supply editable game motion and a DQS material from src/render/. Call follow(acceptedState, dt) in afterPhysics; accepted position/velocity and heading are the only root authority. An identity parent is required. A named visualOriginOffset accommodates centred physics capsules and remains reported. Pause freezes the pose; teleport replaces motion history; disposal settles pending actions and attempts every resource cleanup. The first action set is stand/sit/lie.

The example contains the pinned wolf's editable motion closure and a base-surface TSL DQS material with normal/shadow skinning. Fur, fins, eyes, runtime generation, other species and AnimationMixer/composer ownership are outside this slice.

The pinned donor MIT notice is retained in LICENSES/Procedural-Animals-MIT.txt. Focused tests use actual generation, the ordinary asset cook, real fixed-step Rapier, an independent CPU DQS oracle and lifecycle fault controls. These are CPU evidence only.

Every public function and class in this package is in its API reference.

Edit this page on GitHub ↗