OverviewHistoryStatsSecurity
npx skills add ...
Documentation
SKILL.md
npx skills add enzed/r3f-skills --skill r3f-geometry
Build React Three Fiber geometry, custom buffers, instanced meshes, points, and lines. Use for shape construction and geometry draw-call optimization, rather than material appearance.
npx skills add enzed/r3f-skills --skill r3f-geometry
Inspect installed Three.js, Fiber, and Drei versions before copying constructor arguments or helper props. Examples target Fiber 9 / React 19 and Three.js r185.
args match the Three.js constructor; changing them reconstructs geometry, so animate transforms rather than constructor inputs.BufferGeometry for custom topology and buffer-based points for large particle sets. Keep generated arrays stable and use deterministic generation when results must be reproducible.Instances for convenient declarative instances with events. For large or frequently updated sets, read native instancing to avoid per-instance React overhead.Merged creates instancing abstractions from meshes, not BufferGeometry objects; it does not concatenate arbitrary static geometry. For actual merging, inspect mergeGeometries from three/addons/utils/BufferGeometryUtils.js and ensure compatible attributes/indexing.Mount below Canvas with lighting. Each Instance belongs to its nearest Instances provider.
position and normal attributes usually have item size 3; UVs have item size 2. Construct JSX buffer attributes with args={[typedArray, itemSize]} and the correct attach, not just array/count props with no constructor arguments.computeVertexNormals() when appropriate; do not recompute every frame if a shader or analytic normals can express the deformation more cheaply.attribute.needsUpdate = true. Choose dynamic usage before the first GPU upload when buffers will change often.texture.channel selects uv, uv1, uv2, or uv3. Do not unconditionally copy uv into uv2 for AO.Line supports useful line widths; native WebGL line width is limited by the platform. Check worldUnits when choosing screen-space versus world-space thickness.Text for flat text and Text3D for extruded geometry. Current TextGeometry uses depth, not the historical height; verify the helper's installed types and font format.Edges for sharp-edge outlines, not as a replacement for screen-space selection effects.Bounds and Center change framing/transforms; decide whether they should update after asset loading, resizing, or interaction.Check bounds/culling after updates, raycast hit positions, resource cleanup, and draw calls. Test at the intended object count; three instances do not establish performance at ten thousand.