Text3D
<Text3D />
is a component that renders text in 3D. It is a wrapper around the TextGeometry class.
Usage
To use the <Text3D />
component you need to pass the font
prop with the URL of the font JSON file you want to use. TextGeometry uses typeface
.json generated fonts, you can generate yours here
<template>
<TresCanvas>
<Suspense>
<Text3D
text="TresJS"
font="/fonts/FiraCodeRegular.json"
>
<TresMeshNormalMaterial />
</Text3D>
</Suspense>
</TresCanvas>
</template>
Notice that you need to pass the <TresMeshNormalMaterial />
component as a child of the <Text3D />
component. This is because <Text3D />
is a Mesh
component, so it needs a material. The geometry is created automatically. Also you can pass the text as a slot or as a prop like this:
<template>
<TresCanvas>
<Suspense>
<Text3D font="/fonts/FiraCodeRegular.json">
TresJS
<TresMeshNormalMaterial />
</Text3D>
</Suspense>
</TresCanvas>
</template>
In addition, you can use the power of Vue to add reactivity, but you need to apply the needUpdates prop, for example you can create a reactive value, apply a v-model and make the bound, the Text3D component will update
<template>
<input v-model="myReactiveText" />
<TresCanvas>
<Suspense>
<Text3D
:text="myReactiveText"
font="/fonts/FiraCodeRegular.json"
center
need-updates
/>
</Suspense>
</TresCanvas>
</template>
Props
Prop | Description | Default |
---|---|---|
font | The font data or font name to use for the text. | |
text | The text to display. | |
size | The size of the text. | 0.5 |
height | The height of the text. | 0.2 |
curveSegments | The number of curve segments to use when generating the text geometry. | 5 |
bevelEnabled | A flag indicating whether beveling should be enabled for the text. | true |
bevelThickness | The thickness of the beveled edge on the text. | 0.05 |
bevelSize | The size of the beveled edge on the text. | 0.02 |
bevelOffset | The offset of the beveled edge on the text. | 0 |
bevelSegments | The number of bevel segments to use when generating the text geometry. | 4 |
center | To center the text | false |
needUpdates | This props add reactivity | false |
References
[1] This table was generated by ChatGPT based on the Vue component props.