# Cientos
Collection of ready-made helpers and components for TresJS. Uses `three-stdlib` under the hood.
```bash
pnpm add @tresjs/cientos
```
No `Tres` prefix needed - import and use directly.
## Controls
### OrbitControls
Orbit around a target:
```vue
```
Key props: `enableDamping`, `autoRotate`, `autoRotateSpeed`, `enableZoom`, `enablePan`, `minDistance`, `maxDistance`, `minPolarAngle`, `maxPolarAngle`
Events: `@change`, `@start`, `@end`
### Other Controls
| Component | Description |
| --------------------- | ------------------------------------- |
| `CameraControls` | Full-featured camera controller |
| `PointerLockControls` | First-person controls (lock cursor) |
| `KeyboardControls` | WASD movement |
| `MapControls` | Panning-focused (like Google Maps) |
| `TransformControls` | Move/rotate/scale objects with gizmo |
| `ScrollControls` | Scroll-driven camera/scene animations |
## Loaders
### useGLTF
Load glTF/GLB models:
```vue
```
Returns: `scene`, `nodes`, `materials`, `animations`
Options: `draco: boolean`, `decoderPath: string`
### GLTFModel Component
Declarative alternative:
```vue
```
### Other Loaders
```ts
import { useFBX, useTexture, useVideoTexture, useSVG } from '@tresjs/cientos'
const fbx = await useFBX('/model.fbx')
const texture = await useTexture('/texture.jpg')
const video = useVideoTexture('/video.mp4')
const svg = await useSVG('/icon.svg')
```
### useProgress
Track loading progress:
```vue
Loading: {{ Math.round(progress) }}%
```
## Materials
### GlassMaterial
Realistic glass/crystal:
```vue
```
### HolographicMaterial
Sci-fi hologram effect:
```vue
```
### WobbleMaterial
Animated wobble distortion:
```vue
```
### Other Materials
| Component | Description |
| ------------------------ | --------------------------------------------- |
| `CustomShaderMaterial` | Extend built-in materials with custom shaders |
| `MeshReflectionMaterial` | Reflective surfaces like water/mirrors |
| `PointMaterial` | For point clouds |
| `MeshDiscardMaterial` | Invisible (for shadows only) |
## Staging
### Environment
Set up scene environment and background:
```vue
```
Or use presets:
```vue
```
Presets: `apartment`, `city`, `dawn`, `forest`, `lobby`, `night`, `park`, `studio`, `sunset`, `warehouse`
### Sky
Procedural sky:
```vue
```
### Stars
Starfield background:
```vue
```
### Precipitation
Rain/snow:
```vue
```
### Other Staging
| Component | Description |
| --------------------- | ----------------------------------- |
| `ContactShadows` | Soft contact shadows on ground |
| `AccumulativeShadows` | Progressive shadow baking |
| `SoftShadows` | PCSS soft shadows |
| `Backdrop` | Curved backdrop for studio lighting |
| `Grid` | Ground grid helper |
| `Ocean` | Realistic ocean with waves |
| `Smoke` | Volumetric smoke effect |
| `Sparkles` | Floating particle sparkles |
## Abstractions
### Text3D
3D text geometry:
```vue
```
Font format: typeface.json (generate at gero3.github.io/facetype.js)
### Html
HTML overlay in 3D space:
```vue
Hello World
```
### Billboard
Always face camera:
```vue
```
### Levioso
Floating animation:
```vue
```
### Other Abstractions
| Component | Description |
| ----------------- | -------------------------- |
| `Edges` | Render object edges |
| `Outline` | Object outline effect |
| `LensFlare` | Camera lens flare |
| `MouseParallax` | Parallax on mouse movement |
| `Reflector` | Reflective plane |
| `PositionalAudio` | 3D positioned audio |
| `GlobalAudio` | Background audio |
## Shapes
Pre-made geometry components:
```vue
```
All shapes support mesh props like `position`, `rotation`, `scale`, and accept a default slot for materials.
## Debug/Performance
### Stats
FPS counter:
```vue
```
### StatsGl
WebGL stats panel:
```vue
```
### Lod
Level of detail:
```vue
```