一键导入
threejs
Three.js scene-graph parsing and export workflows for mesh baking, InstancedMesh expansion, part partitioning, per-link OBJ export, and URDF articulation.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Three.js scene-graph parsing and export workflows for mesh baking, InstancedMesh expansion, part partitioning, per-link OBJ export, and URDF articulation.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | threejs |
| description | Three.js scene-graph parsing and export workflows for mesh baking, InstancedMesh expansion, part partitioning, per-link OBJ export, and URDF articulation. |
createScene(), then updateMatrixWorld(true).THREE.Group nodes as parts/links.Object3D (root)
├── Group (part)
│ ├── Mesh
│ └── Group (child part)
│ └── Mesh
└── Group (another part)
└── Mesh
THREE.Scene / THREE.Object3D: containersTHREE.Group: logical part (no geometry)THREE.Mesh: geometry + materialfunction buildPartMap(root) {
const parts = new Map();
root.traverse((obj) => {
if (obj.isGroup && obj.name) parts.set(obj.name, { group: obj, meshes: [] });
});
root.traverse((obj) => {
if (!obj.isMesh) return;
let parent = obj.parent;
while (parent && !(parent.isGroup && parent.name)) parent = parent.parent;
if (parent && parts.has(parent.name)) parts.get(parent.name).meshes.push(obj);
});
return Array.from(parts.values()).filter((p) => p.meshes.length > 0);
}
Always bake transforms before export:
root.updateMatrixWorld(true);
let geom = mesh.geometry.clone();
geom.applyMatrix4(mesh.matrixWorld);
if (geom.index) geom = geom.toNonIndexed();
if (!geom.attributes.normal) geom.computeVertexNormals();
const tempMatrix = new THREE.Matrix4();
const instanceMatrix = new THREE.Matrix4();
obj.getMatrixAt(i, instanceMatrix);
tempMatrix.copy(obj.matrixWorld).multiply(instanceMatrix);
const axisMatrix = new THREE.Matrix4().makeRotationX(-Math.PI / 2);
geom.applyMatrix4(axisMatrix);
<part>.obj.Reference: references/link-export-rules.md.
fixed unless evidence suggests revolute/prismatic.References:
references/joint-type-heuristics.mdreferences/urdf-minimal.mdnode scripts/export_instanced_obj.mjsnode scripts/export_link_objs.mjs --input <scene_js> --out-dir <dir>node scripts/build_urdf_from_scene.mjs --input <scene_js> --output <file.urdf> --mesh-dir <mesh_dir>Adjust inputs/outputs inside scripts as needed.
Harbor framework for agent evaluation. Use when: (1) Running harbor commands (harbor run, harbor tasks check), (2) Creating/validating SkillsBench tasks, (3) Understanding task format or debugging failures.
Discovers relevant agent skills using keyword (BM25) search. Breaks complex tasks into sub-tasks and finds 10 skills via term matching. Use when starting a new task, looking for specialized capabilities, or wanting to find best practices for a domain.
Discovers relevant agent skills using semantic (embedding) search. Breaks complex tasks into sub-tasks and finds 10 skills via natural language similarity. Use when starting a new task, looking for specialized capabilities, or wanting to find best practices for a domain.
Discovers relevant agent skills from a local index of skills for a given task. Breaks complex tasks into sub-tasks and finds 10 skills across keyword, semantic, and hybrid search. Use when starting a new task, looking for specialized capabilities, or wanting to find best practices for a domain.
Civilization 6 district mechanics library. Use when working with district placement validation, adjacency bonus calculations, or understanding Civ6 game rules.
Clean messy tabular datasets with deduplication, missing value imputation, outlier handling, and text processing. Use when dealing with dirty data that has duplicates, nulls, or inconsistent formatting.