threejs-geometry

Create and customize Three.js geometries with BufferGeometry and instancing.

Updated Feb 2, 2026
One-click install
npx skills add https://github.com/nicolasieber-tm/threejs-skills --skill threejs-geometry
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: threejs-geometry
Source: https://github.com/nicolasieber-tm/threejs-skills/tree/main/skills/threejs-geometry
Command: npx skills add https://github.com/nicolasieber-tm/threejs-skills --skill threejs-geometry

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Designing 3D scenes in Three.js often requires juggling a variety of geometry types and data layouts. This Skill centralizes common geometry techniques—built-in shapes, custom BufferGeometry, and instancing—so developers can rapidly prototype and optimize geometry workflows.

Core Features & Use Cases

  • Built-in geometries (BoxGeometry, SphereGeometry, PlaneGeometry, etc.) for quick scene setup.
  • Custom BufferGeometry workflows, including attributes, indices, normals, and UVs for per-vertex control.
  • Instancing patterns with InstancedMesh and InstancedBufferGeometry to render many objects efficiently.
  • Geometry utilities and best practices for centering, scaling, morph targets, and performance optimization.

Quick Start

Create a simple scene using BoxGeometry and render it with a basic material. Then, extend to a custom BufferGeometry by adding position and normal attributes and observe the effect on lighting.

Frequently Asked Questions about threejs-geometry

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create custom BufferGeometry in Three.js with per-vertex attributes?

To create custom BufferGeometry in Three.js, you define position, normal, and UV attributes along with indices for per-vertex control. This allows precise manipulation of geometry data for responsive and optimized 3D content rendering.

What is the best way to render many objects efficiently in Three.js?

The best way to render many objects efficiently in Three.js is using instancing patterns. By utilizing InstancedMesh and InstancedBufferGeometry, you can render numerous objects while significantly reducing draw calls for real-time graphics tasks.

When do I need to use morph targets in Three.js geometries?

You need to use morph targets in Three.js geometries when you want to animate smooth transitions between different vertex states. This technique is part of geometry utilities that enable dynamic shape morphing alongside centering and scaling operations.

Does Three.js support built-in shapes for quick 3D scene setup?

Yes, Three.js supports built-in shapes for quick 3D scene setup. You can use primitives like BoxGeometry, SphereGeometry, and PlaneGeometry to rapidly prototype scenes before extending to custom BufferGeometry workflows for advanced lighting effects.

Why does my custom Three.js geometry render with incorrect lighting?

Your custom Three.js geometry likely renders with incorrect lighting because it lacks proper normal attributes. Adding correct normals, along with positions and UVs, ensures the lighting calculations required for responsive 3D content work as intended.

Can I use InstancedBufferGeometry to optimize real-time graphics in Three.js?

Yes, you can use InstancedBufferGeometry to optimize real-time graphics in Three.js. It allows efficient rendering of many objects by instancing geometry data, which is essential for maintaining performance in complex scenes with per-vertex data manipulation.