Text3D.vue 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <script setup lang="ts">
  2. import { extend, useTexture } from '@tresjs/core'
  3. import { TextGeometry } from 'three/examples/jsm/geometries/TextGeometry'
  4. import { FontLoader } from 'three/examples/jsm/loaders/FontLoader'
  5. const props = defineProps<{
  6. text: string
  7. }>()
  8. extend({ TextGeometry })
  9. const fontPath = 'https://raw.githubusercontent.com/Tresjs/assets/main/fonts/FiraCodeRegular.json'
  10. const fontOptions = {
  11. size: 0.5,
  12. height: 0.2,
  13. curveSegments: 5,
  14. bevelEnabled: true,
  15. bevelThickness: 0.02,
  16. bevelSize: 0.02,
  17. bevelOffset: 0,
  18. bevelSegments: 4,
  19. }
  20. const loader = new FontLoader()
  21. const font = await new Promise((resolve, reject) => {
  22. try {
  23. loader.load(fontPath, (font) => {
  24. resolve(font)
  25. })
  26. }
  27. catch (error) {
  28. reject(console.error('cientos', error))
  29. }
  30. })
  31. const matcapTexture = await useTexture(['https://raw.githubusercontent.com/Tresjs/assets/main/textures/matcaps/7.png'])
  32. </script>
  33. <template>
  34. <TresMesh>
  35. <TresTextGeometry
  36. :args="[props.text, { font, ...fontOptions }]"
  37. center
  38. />
  39. <TresMeshNormalMaterial :matcap="matcapTexture" />
  40. </TresMesh>
  41. </template>