{"id":"f23733bd-88fc-441e-9882-1fc209d82173","shortId":"TRMVhW","kind":"skill","title":"threejs-geometry","tagline":"Three.js geometry creation - built-in shapes, BufferGeometry, custom geometry, instancing. Use when creating 3D shapes, working with vertices, building custom meshes, or optimizing with instanced rendering.","description":"# Three.js Geometry\n\n## When to Use\n- You need to create or optimize geometry in Three.js.\n- The task involves built-in shapes, custom `BufferGeometry`, vertices, or instanced rendering.\n- You are working on mesh structure rather than scene setup or materials alone.\n\n## Quick Start\n\n```javascript\nimport * as THREE from \"three\";\n\n// Built-in geometry\nconst box = new THREE.BoxGeometry(1, 1, 1);\nconst sphere = new THREE.SphereGeometry(0.5, 32, 32);\nconst plane = new THREE.PlaneGeometry(10, 10);\n\n// Create mesh\nconst material = new THREE.MeshStandardMaterial({ color: 0x00ff00 });\nconst mesh = new THREE.Mesh(box, material);\nscene.add(mesh);\n```\n\n## Built-in Geometries\n\n### Basic Shapes\n\n```javascript\n// Box - width, height, depth, widthSegments, heightSegments, depthSegments\nnew THREE.BoxGeometry(1, 1, 1, 1, 1, 1);\n\n// Sphere - radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength\nnew THREE.SphereGeometry(1, 32, 32);\nnew THREE.SphereGeometry(1, 32, 32, 0, Math.PI * 2, 0, Math.PI); // Full sphere\nnew THREE.SphereGeometry(1, 32, 32, 0, Math.PI); // Hemisphere\n\n// Plane - width, height, widthSegments, heightSegments\nnew THREE.PlaneGeometry(10, 10, 1, 1);\n\n// Circle - radius, segments, thetaStart, thetaLength\nnew THREE.CircleGeometry(1, 32);\nnew THREE.CircleGeometry(1, 32, 0, Math.PI); // Semicircle\n\n// Cylinder - radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded\nnew THREE.CylinderGeometry(1, 1, 2, 32, 1, false);\nnew THREE.CylinderGeometry(0, 1, 2, 32); // Cone\nnew THREE.CylinderGeometry(1, 1, 2, 6); // Hexagonal prism\n\n// Cone - radius, height, radialSegments, heightSegments, openEnded\nnew THREE.ConeGeometry(1, 2, 32, 1, false);\n\n// Torus - radius, tube, radialSegments, tubularSegments, arc\nnew THREE.TorusGeometry(1, 0.4, 16, 100);\n\n// TorusKnot - radius, tube, tubularSegments, radialSegments, p, q\nnew THREE.TorusKnotGeometry(1, 0.4, 100, 16, 2, 3);\n\n// Ring - innerRadius, outerRadius, thetaSegments, phiSegments\nnew THREE.RingGeometry(0.5, 1, 32, 1);\n```\n\n### Advanced Shapes\n\n```javascript\n// Capsule - radius, length, capSegments, radialSegments\nnew THREE.CapsuleGeometry(0.5, 1, 4, 8);\n\n// Dodecahedron - radius, detail\nnew THREE.DodecahedronGeometry(1, 0);\n\n// Icosahedron - radius, detail (0 = 20 faces, higher = smoother)\nnew THREE.IcosahedronGeometry(1, 0);\n\n// Octahedron - radius, detail\nnew THREE.OctahedronGeometry(1, 0);\n\n// Tetrahedron - radius, detail\nnew THREE.TetrahedronGeometry(1, 0);\n\n// Polyhedron - vertices, indices, radius, detail\nconst vertices = [1, 1, 1, -1, -1, 1, -1, 1, -1, 1, -1, -1];\nconst indices = [2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1];\nnew THREE.PolyhedronGeometry(vertices, indices, 1, 0);\n```\n\n### Path-Based Shapes\n\n```javascript\n// Lathe - points[], segments, phiStart, phiLength\nconst points = [\n  new THREE.Vector2(0, 0),\n  new THREE.Vector2(0.5, 0),\n  new THREE.Vector2(0.5, 1),\n  new THREE.Vector2(0, 1),\n];\nnew THREE.LatheGeometry(points, 32);\n\n// Extrude - shape, options\nconst shape = new THREE.Shape();\nshape.moveTo(0, 0);\nshape.lineTo(1, 0);\nshape.lineTo(1, 1);\nshape.lineTo(0, 1);\nshape.lineTo(0, 0);\n\nconst extrudeSettings = {\n  steps: 2,\n  depth: 1,\n  bevelEnabled: true,\n  bevelThickness: 0.1,\n  bevelSize: 0.1,\n  bevelSegments: 3,\n};\nnew THREE.ExtrudeGeometry(shape, extrudeSettings);\n\n// Tube - path, tubularSegments, radius, radialSegments, closed\nconst curve = new THREE.CatmullRomCurve3([\n  new THREE.Vector3(-1, 0, 0),\n  new THREE.Vector3(0, 1, 0),\n  new THREE.Vector3(1, 0, 0),\n]);\nnew THREE.TubeGeometry(curve, 64, 0.2, 8, false);\n```\n\n### Text Geometry\n\n```javascript\nimport { FontLoader } from \"three/examples/jsm/loaders/FontLoader.js\";\nimport { TextGeometry } from \"three/examples/jsm/geometries/TextGeometry.js\";\n\nconst loader = new FontLoader();\nloader.load(\"fonts/helvetiker_regular.typeface.json\", (font) => {\n  const geometry = new TextGeometry(\"Hello\", {\n    font: font,\n    size: 1,\n    depth: 0.2, // Was 'height' in older versions\n    curveSegments: 12,\n    bevelEnabled: true,\n    bevelThickness: 0.03,\n    bevelSize: 0.02,\n    bevelSegments: 5,\n  });\n\n  // Center text\n  geometry.computeBoundingBox();\n  geometry.center();\n\n  const mesh = new THREE.Mesh(geometry, material);\n  scene.add(mesh);\n});\n```\n\n## BufferGeometry\n\nThe base class for all geometries. Stores data as typed arrays for GPU efficiency.\n\n### Custom BufferGeometry\n\n```javascript\nconst geometry = new THREE.BufferGeometry();\n\n// Vertices (3 floats per vertex: x, y, z)\nconst vertices = new Float32Array([\n  -1,\n  -1,\n  0, // vertex 0\n  1,\n  -1,\n  0, // vertex 1\n  1,\n  1,\n  0, // vertex 2\n  -1,\n  1,\n  0, // vertex 3\n]);\ngeometry.setAttribute(\"position\", new THREE.BufferAttribute(vertices, 3));\n\n// Indices (for indexed geometry - reuse vertices)\nconst indices = new Uint16Array([\n  0,\n  1,\n  2, // triangle 1\n  0,\n  2,\n  3, // triangle 2\n]);\ngeometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n// Normals (required for lighting)\nconst normals = new Float32Array([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]);\ngeometry.setAttribute(\"normal\", new THREE.BufferAttribute(normals, 3));\n\n// UVs (for texturing)\nconst uvs = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);\ngeometry.setAttribute(\"uv\", new THREE.BufferAttribute(uvs, 2));\n\n// Colors (per-vertex colors)\nconst colors = new Float32Array([\n  1,\n  0,\n  0, // red\n  0,\n  1,\n  0, // green\n  0,\n  0,\n  1, // blue\n  1,\n  1,\n  0, // yellow\n]);\ngeometry.setAttribute(\"color\", new THREE.BufferAttribute(colors, 3));\n// Use with: material.vertexColors = true\n```\n\n### BufferAttribute Types\n\n```javascript\n// Common attribute types\nnew THREE.BufferAttribute(array, itemSize);\n\n// Typed array options\nnew Float32Array(count * itemSize); // Positions, normals, UVs\nnew Uint16Array(count); // Indices (up to 65535 vertices)\nnew Uint32Array(count); // Indices (larger meshes)\nnew Uint8Array(count * itemSize); // Colors (0-255 range)\n\n// Item sizes\n// Position: 3 (x, y, z)\n// Normal: 3 (x, y, z)\n// UV: 2 (u, v)\n// Color: 3 (r, g, b) or 4 (r, g, b, a)\n// Index: 1\n```\n\n### Modifying BufferGeometry\n\n```javascript\nconst positions = geometry.attributes.position;\n\n// Modify vertex\npositions.setXYZ(index, x, y, z);\n\n// Access vertex\nconst x = positions.getX(index);\nconst y = positions.getY(index);\nconst z = positions.getZ(index);\n\n// Flag for GPU update\npositions.needsUpdate = true;\n\n// Recompute normals after position changes\ngeometry.computeVertexNormals();\n\n// Recompute bounding box/sphere after changes\ngeometry.computeBoundingBox();\ngeometry.computeBoundingSphere();\n```\n\n### Interleaved Buffers (Advanced)\n\n```javascript\n// More efficient memory layout for large meshes\nconst interleavedBuffer = new THREE.InterleavedBuffer(\n  new Float32Array([\n    // pos.x, pos.y, pos.z, uv.u, uv.v (repeated per vertex)\n    -1, -1, 0, 0, 0, 1, -1, 0, 1, 0, 1, 1, 0, 1, 1, -1, 1, 0, 0, 1,\n  ]),\n  5, // stride (floats per vertex)\n);\n\ngeometry.setAttribute(\n  \"position\",\n  new THREE.InterleavedBufferAttribute(interleavedBuffer, 3, 0),\n); // size 3, offset 0\ngeometry.setAttribute(\n  \"uv\",\n  new THREE.InterleavedBufferAttribute(interleavedBuffer, 2, 3),\n); // size 2, offset 3\n```\n\n## EdgesGeometry & WireframeGeometry\n\n```javascript\n// Edge lines (only hard edges)\nconst edges = new THREE.EdgesGeometry(boxGeometry, 15); // 15 = threshold angle\nconst edgeMesh = new THREE.LineSegments(\n  edges,\n  new THREE.LineBasicMaterial({ color: 0xffffff }),\n);\n\n// Wireframe (all triangles)\nconst wireframe = new THREE.WireframeGeometry(boxGeometry);\nconst wireMesh = new THREE.LineSegments(\n  wireframe,\n  new THREE.LineBasicMaterial({ color: 0xffffff }),\n);\n```\n\n## Points\n\n```javascript\n// Create point cloud\nconst geometry = new THREE.BufferGeometry();\nconst positions = new Float32Array(1000 * 3);\n\nfor (let i = 0; i < 1000; i++) {\n  positions[i * 3] = (Math.random() - 0.5) * 10;\n  positions[i * 3 + 1] = (Math.random() - 0.5) * 10;\n  positions[i * 3 + 2] = (Math.random() - 0.5) * 10;\n}\n\ngeometry.setAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n\nconst material = new THREE.PointsMaterial({\n  size: 0.1,\n  sizeAttenuation: true, // Size decreases with distance\n  color: 0xffffff,\n});\n\nconst points = new THREE.Points(geometry, material);\nscene.add(points);\n```\n\n## Lines\n\n```javascript\n// Line (connected points)\nconst points = [\n  new THREE.Vector3(-1, 0, 0),\n  new THREE.Vector3(0, 1, 0),\n  new THREE.Vector3(1, 0, 0),\n];\nconst geometry = new THREE.BufferGeometry().setFromPoints(points);\nconst line = new THREE.Line(\n  geometry,\n  new THREE.LineBasicMaterial({ color: 0xff0000 }),\n);\n\n// LineLoop (closed loop)\nconst loop = new THREE.LineLoop(geometry, material);\n\n// LineSegments (pairs of points)\nconst segmentsGeometry = new THREE.BufferGeometry();\nsegmentsGeometry.setAttribute(\n  \"position\",\n  new THREE.BufferAttribute(\n    new Float32Array([\n      -1,\n      0,\n      0,\n      0,\n      1,\n      0, // segment 1\n      0,\n      1,\n      0,\n      1,\n      0,\n      0, // segment 2\n    ]),\n    3,\n  ),\n);\nconst segments = new THREE.LineSegments(segmentsGeometry, material);\n```\n\n## InstancedMesh\n\nEfficiently render many copies of the same geometry.\n\n```javascript\nconst geometry = new THREE.BoxGeometry(1, 1, 1);\nconst material = new THREE.MeshStandardMaterial({ color: 0x00ff00 });\nconst count = 1000;\n\nconst instancedMesh = new THREE.InstancedMesh(geometry, material, count);\n\n// Set transforms for each instance\nconst dummy = new THREE.Object3D();\nconst matrix = new THREE.Matrix4();\n\nfor (let i = 0; i < count; i++) {\n  dummy.position.set(\n    (Math.random() - 0.5) * 20,\n    (Math.random() - 0.5) * 20,\n    (Math.random() - 0.5) * 20,\n  );\n  dummy.rotation.set(Math.random() * Math.PI, Math.random() * Math.PI, 0);\n  dummy.scale.setScalar(0.5 + Math.random());\n  dummy.updateMatrix();\n\n  instancedMesh.setMatrixAt(i, dummy.matrix);\n}\n\n// Flag for GPU update\ninstancedMesh.instanceMatrix.needsUpdate = true;\n\n// Optional: per-instance colors\ninstancedMesh.instanceColor = new THREE.InstancedBufferAttribute(\n  new Float32Array(count * 3),\n  3,\n);\nfor (let i = 0; i < count; i++) {\n  instancedMesh.setColorAt(\n    i,\n    new THREE.Color(Math.random(), Math.random(), Math.random()),\n  );\n}\ninstancedMesh.instanceColor.needsUpdate = true;\n\nscene.add(instancedMesh);\n```\n\n### Update Instance at Runtime\n\n```javascript\n// Update single instance\nconst matrix = new THREE.Matrix4();\ninstancedMesh.getMatrixAt(index, matrix);\n// Modify matrix...\ninstancedMesh.setMatrixAt(index, matrix);\ninstancedMesh.instanceMatrix.needsUpdate = true;\n\n// Raycasting with instanced mesh\nconst intersects = raycaster.intersectObject(instancedMesh);\nif (intersects.length > 0) {\n  const instanceId = intersects[0].instanceId;\n}\n```\n\n## InstancedBufferGeometry (Advanced)\n\nFor custom per-instance attributes beyond transform/color.\n\n```javascript\nconst geometry = new THREE.InstancedBufferGeometry();\ngeometry.copy(new THREE.BoxGeometry(1, 1, 1));\n\n// Add per-instance attribute\nconst offsets = new Float32Array(count * 3);\nfor (let i = 0; i < count; i++) {\n  offsets[i * 3] = Math.random() * 10;\n  offsets[i * 3 + 1] = Math.random() * 10;\n  offsets[i * 3 + 2] = Math.random() * 10;\n}\ngeometry.setAttribute(\"offset\", new THREE.InstancedBufferAttribute(offsets, 3));\n\n// Use in shader\n// attribute vec3 offset;\n// vec3 transformed = position + offset;\n```\n\n## Geometry Utilities\n\n```javascript\nimport * as BufferGeometryUtils from \"three/examples/jsm/utils/BufferGeometryUtils.js\";\n\n// Merge geometries (must have same attributes)\nconst merged = BufferGeometryUtils.mergeGeometries([geo1, geo2, geo3]);\n\n// Merge with groups (for multi-material)\nconst merged = BufferGeometryUtils.mergeGeometries([geo1, geo2], true);\n\n// Compute tangents (required for normal maps)\nBufferGeometryUtils.computeTangents(geometry);\n\n// Interleave attributes for better performance\nconst interleaved = BufferGeometryUtils.interleaveAttributes([\n  geometry.attributes.position,\n  geometry.attributes.normal,\n  geometry.attributes.uv,\n]);\n```\n\n## Common Patterns\n\n### Center Geometry\n\n```javascript\ngeometry.computeBoundingBox();\ngeometry.center(); // Move vertices so center is at origin\n```\n\n### Scale to Fit\n\n```javascript\ngeometry.computeBoundingBox();\nconst size = new THREE.Vector3();\ngeometry.boundingBox.getSize(size);\nconst maxDim = Math.max(size.x, size.y, size.z);\ngeometry.scale(1 / maxDim, 1 / maxDim, 1 / maxDim);\n```\n\n### Clone and Transform\n\n```javascript\nconst clone = geometry.clone();\nclone.rotateX(Math.PI / 2);\nclone.translate(0, 1, 0);\nclone.scale(2, 2, 2);\n```\n\n### Morph Targets\n\n```javascript\n// Base geometry\nconst geometry = new THREE.BoxGeometry(1, 1, 1, 4, 4, 4);\n\n// Create morph target\nconst morphPositions = geometry.attributes.position.array.slice();\nfor (let i = 0; i < morphPositions.length; i += 3) {\n  morphPositions[i] *= 2; // Scale X\n  morphPositions[i + 1] *= 0.5; // Squash Y\n}\n\ngeometry.morphAttributes.position = [\n  new THREE.BufferAttribute(new Float32Array(morphPositions), 3),\n];\n\nconst mesh = new THREE.Mesh(geometry, material);\nmesh.morphTargetInfluences[0] = 0.5; // 50% blend\n```\n\n## Performance Tips\n\n1. **Use indexed geometry**: Reuse vertices with indices\n2. **Merge static meshes**: Reduce draw calls with `mergeGeometries`\n3. **Use InstancedMesh**: For many identical objects\n4. **Choose appropriate segment counts**: More segments = smoother but slower\n5. **Dispose unused geometry**: `geometry.dispose()`\n\n```javascript\n// Good segment counts for common uses\nnew THREE.SphereGeometry(1, 32, 32); // Good quality\nnew THREE.SphereGeometry(1, 64, 64); // High quality\nnew THREE.SphereGeometry(1, 16, 16); // Performance mode\n\n// Dispose when done\ngeometry.dispose();\n```\n\n## BatchedMesh (r183)\n\n`BatchedMesh` is a higher-level alternative to `InstancedMesh` that supports multiple geometries in a single draw call. As of r183, it supports **per-instance opacity** and **per-instance wireframe**.\n\n```javascript\nconst batchedMesh = new THREE.BatchedMesh(maxGeometryCount, maxVertexCount, maxIndexCount);\nbatchedMesh.sortObjects = true; // Enable depth sorting for transparency\n\n// Add different geometries\nconst boxId = batchedMesh.addGeometry(new THREE.BoxGeometry(1, 1, 1));\nconst sphereId = batchedMesh.addGeometry(new THREE.SphereGeometry(0.5, 16, 16));\n\n// Add instances of those geometries\nconst instance1 = batchedMesh.addInstance(boxId);\nconst instance2 = batchedMesh.addInstance(sphereId);\n\n// Set transforms\nconst matrix = new THREE.Matrix4();\nmatrix.setPosition(2, 0, 0);\nbatchedMesh.setMatrixAt(instance1, matrix);\n\n// Per-instance opacity (r183)\nbatchedMesh.setOpacityAt(instance1, 0.5);\n\n// Per-instance visibility\nbatchedMesh.setVisibleAt(instance2, false);\n\nscene.add(batchedMesh);\n```\n\n## See Also\n\n- `threejs-fundamentals` - Scene setup and Object3D\n- `threejs-materials` - Material types for meshes\n- `threejs-shaders` - Custom vertex manipulation\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["threejs","geometry","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-threejs-geometry","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/threejs-geometry","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34460 github stars · SKILL.md body (15,172 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T06:52:01.276Z","embedding":null,"createdAt":"2026-04-18T21:46:17.586Z","updatedAt":"2026-04-22T06:52:01.276Z","lastSeenAt":"2026-04-22T06:52:01.276Z","tsv":"'-1':339,340,342,344,346,347,452,562,563,568,577,837,838,843,852,1006,1057 '-255':735 '0':159,162,171,198,218,302,306,314,321,328,352,353,358,367,382,383,387,394,408,409,412,417,420,421,453,454,457,459,463,464,564,566,569,574,579,598,603,621,622,624,625,627,628,630,631,646,647,649,652,670,671,673,675,677,678,683,734,839,840,841,844,846,849,854,855,868,872,945,1007,1008,1011,1013,1017,1018,1058,1059,1060,1062,1065,1067,1069,1070,1129,1148,1178,1225,1229,1266,1404,1406,1435,1465,1631,1632 '0.02':513 '0.03':511 '0.1':431,433,980 '0.2':469,500 '0.4':253,266 '0.5':94,278,292,386,390,953,960,967,1135,1138,1141,1150,1448,1466,1607,1643 '0x00ff00':110,1102 '0xff0000':1033 '0xffffff':909,926,988 '1':87,88,89,135,136,137,138,139,140,151,156,168,183,184,192,196,210,211,214,219,225,226,239,242,252,265,279,281,293,301,313,320,327,336,337,338,341,343,345,351,356,361,366,391,395,411,414,415,418,427,458,462,498,567,571,572,573,578,599,602,612,623,626,629,632,648,650,651,653,669,674,679,681,682,765,842,845,847,848,850,851,853,856,958,1012,1016,1061,1064,1066,1068,1094,1095,1096,1249,1250,1251,1278,1387,1389,1391,1405,1420,1421,1422,1447,1471,1519,1526,1533,1599,1600,1601 '10':101,102,181,182,954,961,968,1274,1280,1286 '100':255,267 '1000':940,947,1105 '12':507 '15':897,898 '16':254,268,1534,1535,1608,1609 '2':161,212,220,227,240,269,350,355,359,425,576,600,604,607,659,750,878,881,965,1072,1284,1402,1408,1409,1410,1442,1479,1630 '20':307,1136,1139,1142 '3':270,354,357,360,435,551,581,587,605,638,690,740,745,754,867,870,879,883,941,951,957,964,974,1073,1173,1174,1262,1272,1277,1283,1292,1439,1457,1488 '32':95,96,152,153,157,158,169,170,193,197,213,221,241,280,399,1520,1521 '3d':18 '4':294,759,1423,1424,1425,1495 '5':515,857,1505 '50':1467 '6':228 '64':468,1527,1528 '65535':721 '8':295,470 'access':779 'add':1252,1591,1610 'advanc':282,814,1232 'alon':70 'also':1654 'altern':1550 'angl':900 'appropri':1497 'arc':249 'array':539,703,706 'ask':1708 'attribut':699,1238,1256,1296,1316,1345 'b':757,762 'base':370,530,1414 'basic':123 'batchedmesh':1542,1544,1578,1652 'batchedmesh.addgeometry':1596,1604 'batchedmesh.addinstance':1617,1621 'batchedmesh.setmatrixat':1633 'batchedmesh.setopacityat':1641 'batchedmesh.setvisibleat':1648 'batchedmesh.sortobjects':1584 'better':1347 'bevelen':428,508 'bevels':432,512 'bevelseg':434,514 'bevelthick':430,510 'beyond':1239 'blend':1468 'blue':680 'bound':806 'boundari':1716 'box':84,115,126 'box/sphere':807 'boxgeometri':896,917 'boxid':1595,1618 'buffer':813 'bufferattribut':695 'buffergeometri':11,53,528,544,767 'buffergeometryutil':1308 'buffergeometryutils.computetangents':1342 'buffergeometryutils.interleaveattributes':1351 'buffergeometryutils.mergegeometries':1319,1332 'build':23 'built':8,49,80,120 'built-in':7,48,79,119 'call':1485,1561 'capseg':288 'capsul':285 'center':516,1357,1365 'chang':803,809 'choos':1496 'circl':185 'clarif':1710 'class':531 'clear':1683 'clone':1393,1398 'clone.rotatex':1400 'clone.scale':1407 'clone.translate':1403 'close':445,1035 'cloud':931 'color':109,660,664,666,686,689,733,753,908,925,987,1032,1101,1166 'common':698,1355,1515 'comput':1336 'cone':222,231 'connect':1000 'const':83,90,97,105,111,334,348,378,403,422,446,483,490,520,546,558,594,617,642,665,769,781,785,789,823,892,901,913,918,932,936,975,989,1002,1019,1025,1037,1047,1074,1090,1097,1103,1106,1118,1122,1201,1219,1226,1242,1257,1317,1330,1349,1374,1380,1397,1416,1429,1458,1577,1594,1602,1615,1619,1625 'copi':1084 'count':710,717,725,731,1104,1112,1131,1172,1180,1261,1268,1499,1513 'creat':17,39,103,929,1426 'creation':6 'criteria':1719 'curv':447,467 'curveseg':506 'custom':12,24,52,543,1234,1672 'cylind':201 'data':536 'decreas':984 'depth':129,426,499,1587 'depthseg':132 'describ':1687 'detail':298,305,317,324,333 'differ':1592 'dispos':1506,1538 'distanc':986 'dodecahedron':296 'done':1540 'draw':1484,1560 'dummi':1119 'dummy.matrix':1155 'dummy.position.set':1133 'dummy.rotation.set':1143 'dummy.scale.setscalar':1149 'dummy.updatematrix':1152 'edg':887,891,893,905 'edgemesh':902 'edgesgeometri':884 'effici':542,817,1081 'enabl':1586 'environ':1699 'environment-specif':1698 'expert':1704 'extrud':400 'extrudeset':423,439 'face':308 'fals':215,243,471,1650 'fit':1371 'flag':793,1156 'float':552,859 'float32array':561,620,645,668,709,828,939,1056,1171,1260,1455 'font':489,495,496 'fontload':476,486 'fonts/helvetiker_regular.typeface.json':488 'full':164 'fundament':1657 'g':756,761 'geo1':1320,1333 'geo2':1321,1334 'geo3':1322 'geometri':3,5,13,32,42,82,122,473,491,524,534,547,591,933,993,1020,1029,1041,1088,1091,1110,1243,1303,1312,1343,1358,1415,1417,1462,1474,1508,1556,1593,1614 'geometry.attributes.normal':1353 'geometry.attributes.position':771,1352 'geometry.attributes.position.array.slice':1431 'geometry.attributes.uv':1354 'geometry.boundingbox.getsize':1378 'geometry.center':519,1361 'geometry.clone':1399 'geometry.computeboundingbox':518,810,1360,1373 'geometry.computeboundingsphere':811 'geometry.computevertexnormals':804 'geometry.copy':1246 'geometry.dispose':1509,1541 'geometry.morphattributes.position':1451 'geometry.scale':1386 'geometry.setattribute':582,633,654,685,862,873,969,1287 'geometry.setindex':608 'good':1511,1522 'gpu':541,795,1158 'green':676 'group':1325 'hard':890 'height':128,176,204,233,502 'heightseg':131,144,178,206,235 'hello':494 'hemispher':173 'hexagon':229 'high':1529 'higher':309,1548 'higher-level':1547 'icosahedron':303 'ident':1493 'import':74,475,479,1306 'index':590,764,775,784,788,792,1206,1211,1473 'indic':331,349,365,588,595,611,718,726,1478 'innerradius':272 'input':1713 'instanc':14,29,56,1117,1165,1194,1200,1217,1237,1255,1569,1574,1611,1638,1646 'instance1':1616,1634,1642 'instance2':1620,1649 'instancedbuffergeometri':1231 'instancedmesh':1080,1107,1192,1222,1490,1552 'instancedmesh.getmatrixat':1205 'instancedmesh.instancecolor':1167 'instancedmesh.instancecolor.needsupdate':1189 'instancedmesh.instancematrix.needsupdate':1160,1213 'instancedmesh.setcolorat':1182 'instancedmesh.setmatrixat':1153,1210 'instanceid':1227,1230 'interleav':812,1344,1350 'interleavedbuff':824,866,877 'intersect':1220,1228 'intersects.length':1224 'involv':47 'item':737 'items':704,711,732 'javascript':73,125,284,372,474,545,697,768,815,886,928,998,1089,1197,1241,1305,1359,1372,1396,1413,1510,1576 'larg':821 'larger':727 'lath':373 'layout':819 'length':287 'let':943,1127,1176,1264,1433 'level':1549 'light':616 'limit':1675 'line':888,997,999,1026 'lineloop':1034 'lineseg':1043 'loader':484 'loader.load':487 'loop':1036,1038 'mani':1083,1492 'manipul':1674 'map':1341 'match':1684 'materi':69,106,116,525,976,994,1042,1079,1098,1111,1329,1463,1664,1665 'material.vertexcolors':693 'math.max':1382 'math.pi':160,163,172,199,1145,1147,1401 'math.random':952,959,966,1134,1137,1140,1144,1146,1151,1186,1187,1188,1273,1279,1285 'matrix':1123,1202,1207,1209,1212,1626,1635 'matrix.setposition':1629 'maxdim':1381,1388,1390,1392 'maxgeometrycount':1581 'maxindexcount':1583 'maxvertexcount':1582 'memori':818 'merg':1311,1318,1323,1331,1480 'mergegeometri':1487 'mesh':25,62,104,112,118,521,527,728,822,1218,1459,1482,1668 'mesh.morphtargetinfluences':1464 'miss':1721 'mode':1537 'modifi':766,772,1208 'morph':1411,1427 'morphposit':1430,1440,1445,1456 'morphpositions.length':1437 'move':1362 'multi':1328 'multi-materi':1327 'multipl':1555 'must':1313 'need':37 'new':85,92,99,107,113,133,149,154,166,179,190,194,208,216,223,237,250,263,276,290,299,311,318,325,362,380,384,388,392,396,405,436,448,450,455,460,465,485,492,522,548,560,584,596,609,619,635,644,656,667,687,701,708,715,723,729,825,827,864,875,894,903,906,915,920,923,934,938,971,977,991,1004,1009,1014,1021,1027,1030,1039,1049,1053,1055,1076,1092,1099,1108,1120,1124,1168,1170,1184,1203,1244,1247,1259,1289,1376,1418,1452,1454,1460,1517,1524,1531,1579,1597,1605,1627 'normal':613,618,634,637,713,744,800,1340 'object':1494 'object3d':1661 'octahedron':315 'offset':871,882,1258,1270,1275,1281,1288,1291,1298,1302 'older':504 'opac':1570,1639 'openend':207,236 'optim':27,41 'option':402,707,1162 'origin':1368 'outerradius':273 'output':1693 'p':261 'pair':1044 'path':369,441 'path-bas':368 'pattern':1356 'per':553,662,835,860,1164,1236,1254,1568,1573,1637,1645 'per-inst':1163,1235,1253,1567,1572,1636,1644 'per-vertex':661 'perform':1348,1469,1536 'permiss':1714 'philength':146,377 'phiseg':275 'phistart':145,376 'plane':98,174 'point':374,379,398,927,930,990,996,1001,1003,1024,1046 'polyhedron':329 'pos.x':829 'pos.y':830 'pos.z':831 'posit':583,712,739,770,802,863,937,949,955,962,970,973,1052,1301 'positions.getx':783 'positions.gety':787 'positions.getz':791 'positions.needsupdate':797 'positions.setxyz':774 'prism':230 'q':262 'qualiti':1523,1530 'quick':71 'r':755,760 'r183':1543,1564,1640 'radialseg':205,234,247,260,289,444 'radius':142,186,232,245,257,286,297,304,316,323,332,443 'radiusbottom':203 'radiustop':202 'rang':736 'rather':64 'raycast':1215 'raycaster.intersectobject':1221 'recomput':799,805 'red':672 'reduc':1483 'render':30,57,1082 'repeat':834 'requir':614,1338,1712 'reus':592,1475 'review':1705 'ring':271 'runtim':1196 'safeti':1715 'scale':1369,1443 'scene':66,1658 'scene.add':117,526,995,1191,1651 'scope':1686 'see':1653 'segment':187,375,1063,1071,1075,1498,1501,1512 'segmentsgeometri':1048,1078 'segmentsgeometry.setattribute':1051 'semicircl':200 'set':1113,1623 'setfrompoint':1023 'setup':67,1659 'shader':1295,1671 'shape':10,19,51,124,283,371,401,404,438 'shape.lineto':410,413,416,419 'shape.moveto':407 'singl':1199,1559 'size':497,738,869,880,979,983,1375,1379 'size.x':1383 'size.y':1384 'size.z':1385 'sizeattenu':981 'skill':1678 'skill-threejs-geometry' 'slower':1504 'smoother':310,1502 'sort':1588 'source-sickn33' 'specif':1700 'sphere':91,141,165 'sphereid':1603,1622 'squash':1449 'start':72 'static':1481 'step':424 'stop':1706 'store':535 'stride':858 'structur':63 'substitut':1696 'success':1718 'support':1554,1566 'tangent':1337 'target':1412,1428 'task':46,1682 'test':1702 'tetrahedron':322 'text':472,517 'textgeometri':480,493 'textur':641 'thetalength':148,189 'thetaseg':274 'thetastart':147,188 'three':76,78 'three.batchedmesh':1580 'three.boxgeometry':86,134,1093,1248,1419,1598 'three.bufferattribute':585,610,636,657,688,702,972,1054,1453 'three.buffergeometry':549,935,1022,1050 'three.capsulegeometry':291 'three.catmullromcurve3':449 'three.circlegeometry':191,195 'three.color':1185 'three.conegeometry':238 'three.cylindergeometry':209,217,224 'three.dodecahedrongeometry':300 'three.edgesgeometry':895 'three.extrudegeometry':437 'three.icosahedrongeometry':312 'three.instancedbufferattribute':1169,1290 'three.instancedbuffergeometry':1245 'three.instancedmesh':1109 'three.interleavedbuffer':826 'three.interleavedbufferattribute':865,876 'three.js':4,31,44 'three.lathegeometry':397 'three.line':1028 'three.linebasicmaterial':907,924,1031 'three.lineloop':1040 'three.linesegments':904,921,1077 'three.matrix4':1125,1204,1628 'three.mesh':114,523,1461 'three.meshstandardmaterial':108,1100 'three.object3d':1121 'three.octahedrongeometry':319 'three.planegeometry':100,180 'three.points':992 'three.pointsmaterial':978 'three.polyhedrongeometry':363 'three.ringgeometry':277 'three.shape':406 'three.spheregeometry':93,150,155,167,1518,1525,1532,1606 'three.tetrahedrongeometry':326 'three.torusgeometry':251 'three.torusknotgeometry':264 'three.tubegeometry':466 'three.vector2':381,385,389,393 'three.vector3':451,456,461,1005,1010,1015,1377 'three.wireframegeometry':916 'three/examples/jsm/geometries/textgeometry.js':482 'three/examples/jsm/loaders/fontloader.js':478 'three/examples/jsm/utils/buffergeometryutils.js':1310 'threej':2,1656,1663,1670 'threejs-fundament':1655 'threejs-geometri':1 'threejs-materi':1662 'threejs-shad':1669 'threshold':899 'tip':1470 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'torus':244 'torusknot':256 'transform':1114,1300,1395,1624 'transform/color':1240 'transpar':1590 'treat':1691 'triangl':601,606,912 'true':429,509,694,798,982,1161,1190,1214,1335,1585 'tube':246,258,440 'tubularseg':248,259,442 'type':538,696,700,705,1666 'u':751 'uint16array':597,716 'uint32array':724 'uint8array':730 'unus':1507 'updat':796,1159,1193,1198 'use':15,35,691,1293,1472,1489,1516,1676 'util':1304 'uv':639,643,655,658,714,749,874 'uv.u':832 'uv.v':833 'v':752 'valid':1701 'vec3':1297,1299 'version':505 'vertex':554,565,570,575,580,663,773,780,836,861,1673 'vertic':22,54,330,335,364,550,559,586,593,722,1363,1476 'visibl':1647 'width':127,175 'widthseg':130,143,177 'wirefram':910,914,922,1575 'wireframegeometri':885 'wiremesh':919 'work':20,60 'x':555,741,746,776,782,1444 'y':556,742,747,777,786,1450 'yellow':684 'z':557,743,748,778,790","prices":[{"id":"0565e07c-b0b8-4acd-9d25-01ad75437d4b","listingId":"f23733bd-88fc-441e-9882-1fc209d82173","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:46:17.586Z"}],"sources":[{"listingId":"f23733bd-88fc-441e-9882-1fc209d82173","source":"github","sourceId":"sickn33/antigravity-awesome-skills/threejs-geometry","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/threejs-geometry","isPrimary":false,"firstSeenAt":"2026-04-18T21:46:17.586Z","lastSeenAt":"2026-04-22T06:52:01.276Z"}],"details":{"listingId":"f23733bd-88fc-441e-9882-1fc209d82173","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"threejs-geometry","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34460,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-22T06:40:00Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"cb14c6c4802c795f4829694655e6fe87dd0feb61","skill_md_path":"skills/threejs-geometry/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/threejs-geometry"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"threejs-geometry","description":"Three.js geometry creation - built-in shapes, BufferGeometry, custom geometry, instancing. Use when creating 3D shapes, working with vertices, building custom meshes, or optimizing with instanced rendering."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/threejs-geometry"},"updatedAt":"2026-04-22T06:52:01.276Z"}}