You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
earthquake_3d_viewer_front/three/manual/fr/creating-text.html

170 lines
7.3 KiB
HTML

<!DOCTYPE html><html lang="fr"><head>
<meta charset="utf-8">
<title>Création de texte</title>
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@threejs">
<meta name="twitter:title" content="Three.js Création de texte">
<meta property="og:image" content="https://threejs.org/files/share.png">
<link rel="shortcut icon" href="../../files/favicon_white.ico" media="(prefers-color-scheme: dark)">
<link rel="shortcut icon" href="../../files/favicon.ico" media="(prefers-color-scheme: light)">
<link rel="stylesheet" href="../resources/lesson.css">
<link rel="stylesheet" href="../resources/lang.css">
<script type="importmap">
{
"imports": {
"three": "../../build/three.module.js"
}
}
</script>
</head>
<body>
<div class="container">
<div class="lesson-title">
<h1>Création de texte</h1>
</div>
<div class="lesson">
<div class="lesson-main">
<div>
<p>
Il y a souvent des moments où vous pourriez avoir besoin d'utiliser du texte dans votre application three.js - voici
quelques façons de le faire.
</p>
</div>
<h2>1. DOM + CSS</h2>
<div>
<p>
L'utilisation de HTML est généralement la manière la plus simple et la plus rapide d'ajouter du texte. C'est la méthode
utilisée pour les superpositions descriptives dans la plupart des exemples three.js.
</p>
<p>Vous pouvez ajouter du contenu à un</p>
<pre class="prettyprint notranslate lang-js" translate="no">
&lt;div id="info"&gt;Description&lt;/div&gt;
</pre>
<p>
et utiliser du balisage CSS pour le positionner absolument à une position au-dessus de tous les autres avec un
z-index, surtout si vous exécutez three.js en plein écran.
</p>
<pre class="prettyprint notranslate lang-js" translate="no">
#info {
position: absolute;
top: 10px;
width: 100%;
text-align: center;
z-index: 100;
display:block;
}
</pre>
</div>
<h2>2. Utiliser `CSS2DRenderer` ou `CSS3DRenderer`</h2>
<div>
<p>
Utilisez ces moteurs de rendu pour dessiner du texte de haute qualité contenu dans des éléments DOM dans votre scène three.js.
C'est similaire à 1., sauf qu'avec ces moteurs de rendu, les éléments peuvent être intégrés de manière plus étroite et dynamique dans la scène.
</p>
</div>
<h2>3. Dessiner du texte sur un canvas et l'utiliser comme `Texture`</h2>
<div>
<p>Utilisez cette méthode si vous souhaitez dessiner facilement du texte sur un plan dans votre scène three.js.</p>
</div>
<h2>4. Créer un modèle dans votre application 3D préférée et exporter vers three.js</h2>
<div>
<p>Utilisez cette méthode si vous préférez travailler avec vos applications 3D et importer les modèles dans three.js.</p>
</div>
<h2>5. Géométrie de Texte Procédurale</h2>
<div>
<p>
Si vous préférez travailler purement en THREE.js ou créer des géométries de texte 3D procédurales et dynamiques,
vous pouvez créer un maillage dont la géométrie est une instance de THREE.TextGeometry :
</p>
<p>
<code>new THREE.TextGeometry( text, parameters );</code>
</p>
<p>
Pour que cela fonctionne, cependant, votre TextGeometry aura besoin d'une instance de THREE.Font
à définir sur son paramètre « font ».
Consultez la page `TextGeometry` pour plus d'informations sur la manière dont cela peut être fait, des descriptions de chaque
paramètre accepté, et une liste des polices JSON qui sont incluses dans la distribution THREE.js elle-même.
</p>
<h3>Exemples</h3>
<p>
[example:webgl_geometry_text WebGL / géométrie / texte]<br />
[example:webgl_shadowmap WebGL / shadowmap]
</p>
<p>
Si Typeface est indisponible, ou si vous souhaitez utiliser une police qui ne s'y trouve pas, il existe un tutoriel
avec un script python pour blender qui vous permet d'exporter du texte au format JSON de Three.js :
[link:http://www.jaanga.com/2012/03/blender-to-threejs-create-3d-text-with.html]
</p>
</div>
<h2>6. Polices bitmap</h2>
<div>
<p>
Les BMFonts (polices bitmap) permettent de regrouper les glyphes dans une seule BufferGeometry. Le rendu BMFont
prend en charge le retour à la ligne, l'espacement des lettres, le crénage, les champs de distance signés avec dérivées standard,
les champs de distance signés multicanaux, les polices multi-textures, et plus encore.
Voir [link:https://github.com/felixmariotto/three-mesh-ui three-mesh-ui] ou [link:https://github.com/Jam3/three-bmfont-text three-bmfont-text].
</p>
<p>
Des polices standard sont disponibles dans des projets comme
[link:https://github.com/etiennepinchon/aframe-fonts A-Frame Fonts], ou vous pouvez créer les vôtres
à partir de n'importe quelle police .TTF, en optimisant pour n'inclure que les caractères requis pour un projet.
</p>
<p>
Quelques outils utiles :
</p>
<ul>
<li>[link:http://msdf-bmfont.donmccurdy.com/ msdf-bmfont-web] <i>(basé sur le web)</i></li>
<li>[link:https://github.com/soimy/msdf-bmfont-xml msdf-bmfont-xml] <i>(ligne de commande)</i></li>
<li>[link:https://github.com/libgdx/libgdx/wiki/Hiero hiero] <i>(application de bureau)</i></li>
</ul>
</div>
<h2>7. Troika Text</h2>
<div>
<p>
Le paquet [link:https://www.npmjs.com/package/troika-three-text troika-three-text] rend
du texte antialiasé de qualité en utilisant une technique similaire à celle des BMFonts, mais fonctionne directement
avec n'importe quel fichier de police .TTF ou .WOFF, vous n'avez donc pas à prégénérer une texture de glyphe hors ligne. Il ajoute
également des capacités, notamment :
</p>
<ul>
<li>Effets comme les contours, les ombres portées et la courbure</li>
<li>La possibilité d'appliquer n'importe quel Material three.js, même un ShaderMaterial personnalisé</li>
<li>Prise en charge des ligatures de police, des scripts avec lettres jointes et de la mise en page de droite à gauche/bidirectionnelle</li>
<li>Optimisation pour de grandes quantités de texte dynamique, effectuant la majeure partie du travail hors du thread principal dans un web worker</li>
</ul>
</div>
</div>
</div>
</div>
<script src="../resources/prettify.js"></script>
<script src="../resources/lesson.js"></script>
</body></html>