---
title: Texte 3D
description: Ajoutez facilement du texte 3D
author: alvarosabu
thumbnail: /recipes/text-3d.png
difficulty: 1
---
# Texte 3D
[TextGeometry](https://threejs.org/docs/index.html?q=text#examples/en/geometries/TextGeometry) est l'un des moyens par lesquels nous pouvons ajouter du texte 3D à notre scène.
Cependant, cela ne fait pas partie du cœur de ThreeJS. Par conséquent, pour l'utiliser, vous devrez l'importer depuis le module `three/addons/controls/TextGeometry`.
Cela crée un problème car **TresJS** crée automatiquement un catalogue des trois cœurs afin que vous puissiez les utiliser comme composants.
Heureusement, **TresJS** offre un moyen d'étendre le catalogue de composants. Vous pouvez le faire en utilisant la méthode `extend` de la bibliothèque principale.
Pour plus d'informations sur la façon d'étendre votre catalogue TresJS, consultez la section [extending](/advanced/extending.md).
## Avec TextGeometry
Pour utiliser `TextGeometry`, vous devez d'abord importer `three/addons/geometries/TextGeometry`.
```js
import { TextGeometry } from 'three/addons/geometries/TextGeometry'
```
Ensuite, vous devez étendre le catalogue de composants à l'aide de la méthode `extend`.
```js
import { extend } from '@tresjs/core'
import { TextGeometry } from 'three/addons/geometries/TextGeometry'
extend({ TextGeometry })
```
[TextGeometry](https://threejs.org/docs/index.html?q=text#examples/en/geometries/TextGeometry) n'a besoin que d'un seul argument obligatoire, la source. Vous pouvez voir un exemple ci-dessous.
```js
const fontPath = 'https://raw.githubusercontent.com/Tresjs/assets/main/fonts/FiraCodeRegular.json'
const loader = new FontLoader()
const font = await new Promise((resolve, reject) => {
try {
loader.load(fontPath, (font) => {
resolve(font)
})
}
catch (error) {
reject(console.error('cientos', error))
}
})
```
Vous pouvez maintenant utiliser le composant `TresTextGeometry` dans un TresMesh dans votre scène.
```vue
```
puis, comme dans l'exemple, vous pouvez passer un objet avec les paramètres souhaités.
```ts
const fontOptions = {
size: 0.5,
height: 0.2,
curveSegments: 5,
bevelEnabled: true,
bevelThickness: 0.05,
bevelSize: 0.02,
bevelOffset: 0,
bevelSegments: 4,
}
```
Nous pouvons également transmettre un matcapTexture pour ajouter les derniers détails, en utilisant TresMeshNormalMaterial dans TresMesh.
```ts
const matcapTexture = await useTexture(['https://raw.githubusercontent.com/Tresjs/assets/main/textures/matcaps/7.png'])
```
```html
```
Le code final ressemblerait donc à ceci :
```vue
```
Je sais que cela semble demander beaucoup de travail, mais j'ai une bonne nouvelle, il existe un moyen beaucoup plus simple.
## TextGeometry de `cientos`
Le package `cientos` fournit un composant appelé `` qui est un wrapper pour `TextGeometry` du module [`three-stdlib`](https://github.com/pmndrs/three-stdlib).
Le meilleur? Vous n'avez pas besoin d'étendre le catalogue, transmettez simplement l'argument source.
Cela fonctionne tout simplement. 💯 (si aucun texte n'est fourni, le texte sera TresJS)
```vue
```
Nous pouvons passer les options comme une propriété:
```html
```
Dans le cas où les options ne sont pas fournies, les valeurs par défaut sont :
```
size: 0.5,
height: 0.2,
curveSegments: 5,
bevelEnabled: true,
bevelThickness: 0.05,
bevelSize: 0.02,
bevelOffset: 0,
bevelSegments: 4,
```
Par défaut, le texte dans ThreeJS commence à la position de départ du maillage, donc s'il vaut [0,0,0], le texte commencera là, mais nous pouvons le centrer en passant simplement la props "center".
```vue
```