AgentSkillsCN

3d-lenia

3D体素Lenia引擎、预设、切片可视化,以及GPU流水线。适用于3D模拟、体素渲染,或3D生物体预设的开发场景。

SKILL.md
--- frontmatter
name: 3d-lenia
description: 3D volumetric Lenia engine, presets, slice visualization, and GPU pipeline. Use when working on 3D simulation, volumetric rendering, or 3D organism presets.

3D Lenia Engine

Creating 3D Engine

typescript
import { createEngine3D } from "./core/engine-3d";

const engine3D = await createEngine3D({
  canvas,
  size: 64, // Grid size (32, 64, or 128)
});

Engine API

typescript
// Lifecycle
engine3D.start();
engine3D.stop();
engine3D.stepOnce();

// Load preset organism
engine3D.loadPreset("stable-sphere");

// Slice visualization
engine3D.setSlicePlane("xy" | "xz" | "yz");
engine3D.setSlicePosition(32); // Position along slice axis

// Rendering
engine3D.setColormap("viridis");

// State access
const state = await engine3D.getState(); // Full 3D state (Float32Array)
const slice = await engine3D.getSlice("xy", 32); // 2D slice

3D Presets

PresetDescription
orbium-3dClassic Orbium in 3D
stable-sphereStable spherical organism
ellipsoid-gliderMoving ellipsoidal glider
dual-orbiumTwo interacting Orbiums
torus-3dToroidal organism
dual-ring-blobTwo ring-shaped blobs
primordial-soup-3dRandom initial conditions
small-orbiumCompact Orbium variant

Loading Presets

typescript
import { LENIA_3D_PRESETS } from "./patterns/lenia-3d-presets";

const preset = LENIA_3D_PRESETS["stable-sphere"];
engine3D.loadPreset(preset.name);

Grid Sizes

SizeTotal CellsUse Case
32³32,768Quick testing
64³262,144Default, balanced
128³2,097,152High detail, slow

Types

typescript
import type {
  Grid3DConfig,
  Lenia3DParams,
  Kernel3DConfig,
  SlicePlane,
} from "./core/types-3d";

interface Grid3DConfig {
  size: number; // Cube dimension
  kernelRadius: number;
  growthCenter: number;
  growthWidth: number;
  dt: number;
}

type SlicePlane = "xy" | "xz" | "yz";

3D GPU Pipeline

typescript
import { createLenia3DPipeline } from "./compute/webgpu/lenia-3d-pipeline";

const pipeline = createLenia3DPipeline(device, {
  size: 64,
  kernelRadius: 7,
  growthCenter: 0.12,
  growthWidth: 0.04,
});

// Step simulation
pipeline.step(commandEncoder);

// Get slice for visualization
const sliceData = await pipeline.getSlice("xy", 32);

Core Files

FilePurpose
core/engine-3d.ts3D engine orchestrator
core/types-3d.ts3D type definitions
core/kernels-3d.ts3D kernel generation
compute/webgpu/lenia-3d-pipeline.ts3D GPU compute pipeline
patterns/lenia-3d-presets.ts3D organism presets