# 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 ``` ## 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 ```