Creating-text.html 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <!DOCTYPE html>
  2. <html lang="pt-br">
  3. <head>
  4. <meta charset="utf-8">
  5. <base href="../../../" />
  6. <script src="page.js"></script>
  7. <link type="text/css" rel="stylesheet" href="page.css" />
  8. </head>
  9. <body>
  10. <h1>Criando texto</h1>
  11. <div>
  12. <p>
  13. Muitas vezes, você pode precisar usar texto em sua aplicação three.js - aqui estão algumas maneiras de fazer isso.
  14. </p>
  15. </div>
  16. <h2>1. DOM + CSS</h2>
  17. <div>
  18. <p>
  19. Usar HTML geralmente é a maneira mais fácil e rápida de adicionar texto. Este é o método
  20. usado para sobreposições descritivas na maioria dos exemplos three.js.
  21. </p>
  22. <p>Você pode adicionar conteúdo para uma</p>
  23. <code>&lt;div id="info"&gt;Description&lt;/div&gt;</code>
  24. <p>
  25. e usar marcação CSS para posicionar absolutamente em uma posição acima de todas as outras com um
  26. z-index, especialmente se você estiver executando o three.js em tela cheia.
  27. </p>
  28. <code>
  29. #info {
  30. position: absolute;
  31. top: 10px;
  32. width: 100%;
  33. text-align: center;
  34. z-index: 100;
  35. display:block;
  36. }
  37. </code>
  38. </div>
  39. <h2>2. Usar [page:CSS2DRenderer] ou [page:CSS3DRenderer]</h2>
  40. <div>
  41. <p>
  42. Use esses renderizadores para desenhar texto de alta qualidade contido em elementos DOM para sua cena three.js.
  43. Isso é semelhante ao item 1. exceto que esses elementos de renderização podem ser integrados
  44. mais firmemente e dinamicamente na cena.
  45. </p>
  46. </div>
  47. <h2>3. Desenhe texto na tela e use como [page:Texture]</h2>
  48. <div>
  49. <p>
  50. Use este método se deseja desenhar texto facilmente em um plano na sua cena three.js.
  51. </p>
  52. </div>
  53. <h2>4. Crie um modelo em seu aplicativo 3D favorito e exporte para three.js</h2>
  54. <div>
  55. <p>Use este método se preferir trabalhar com seus aplicativos 3D e importar os modelos para o three.js.</p>
  56. </div>
  57. <h2>5. Geometria de Texto Procedural</h2>
  58. <div>
  59. <p>
  60. Se você preferir trabalhar puramente em THREE.js ou criar geometrias de texto 3D
  61. procedurais e dinâmicas, você pode criar um mesh cuja geometria é uma instância de THREE.TextGeometry:
  62. </p>
  63. <p>
  64. <code>new THREE.TextGeometry( text, parameters );</code>
  65. </p>
  66. <p>
  67. Para que isso funcione, no entanto, seu TextGeometry precisará de uma instância de THREE.Font
  68. para ser definido em seu parâmetro "fonte".
  69. Veja a página [page:TextGeometry] para mais informações sobre como isso pode ser feito, descrição de cada
  70. um dos parâmetros aceitos e uma lista das fontes JSON que vêm com a própria distribuição THREE.js.
  71. </p>
  72. <h3>Exemplos</h3>
  73. <p>
  74. [example:webgl_geometry_text WebGL / geometry / text]<br />
  75. [example:webgl_shadowmap WebGL / shadowmap]
  76. </p>
  77. <p>
  78. Se o Typeface estiver desativado ou você quiser usar uma fonte que não está lá, há um tutorial
  79. com um script python para blender que permite exportar texto para o formato JSON do Three.js:
  80. [link:http://www.jaanga.com/2012/03/blender-to-threejs-create-3d-text-with.html]
  81. </p>
  82. </div>
  83. <h2>6. Fontes Bitmap</h2>
  84. <div>
  85. <p>
  86. BMFonts (fontes Bitmap) permitem agrupar glifos em um único BufferGeometry. A renderização do
  87. BMFont suporta quebra de palavras, espaçamento entre letras, kerning, campos de distância assinados com padrão
  88. derivados, campos de distância com sinal multicanal, fontes com várias texturas e muito mais.
  89. Veja [link:https://github.com/felixmariotto/three-mesh-ui three-mesh-ui] ou [link:https://github.com/Jam3/three-bmfont-text three-bmfont-text].
  90. </p>
  91. <p>
  92. As Stock Fonts estão disponíveis em projetos como
  93. [link:https://github.com/etiennepinchon/aframe-fonts A-Frame Fonts], ou você pode criar o seu próprio
  94. de qualquer fonte .TTF, otimizando para incluir apenas os caracteres necessários para um projeto.
  95. </p>
  96. <p>
  97. Algumas ferramentas úteis:
  98. </p>
  99. <ul>
  100. <li>[link:http://msdf-bmfont.donmccurdy.com/ msdf-bmfont-web] <i>(web)</i></li>
  101. <li>[link:https://github.com/soimy/msdf-bmfont-xml msdf-bmfont-xml] <i>(linha de comando)</i></li>
  102. <li>[link:https://github.com/libgdx/libgdx/wiki/Hiero hiero] <i>(desktop)</i></li>
  103. </ul>
  104. </div>
  105. <h2>7. Troika Text</h2>
  106. <div>
  107. <p>
  108. O pacote [link:https://www.npmjs.com/package/troika-three-text troika-three-text] renderiza
  109. texto com suavização de qualidade usando uma técnica semelhante ao BMFonts, mas funciona diretamente com qualquer
  110. arquivo de fonte .TTF ou .WOFF, para que você não precise pré-gerar uma textura de glifo offline. Também adiciona
  111. capacidades incluindo:
  112. </p>
  113. <ul>
  114. <li>Efeitos como traços, sombras e curvatura</li>
  115. <li>A capacidade de aplicar qualquer material three.js, até mesmo um ShaderMaterial personalizado</li>
  116. <li>Suporte para ligaduras de fonte, scripts com letras unidas e layout da direita para a esquerda/bidirecional</li>
  117. <li>Otimização para grandes quantidades de texto dinâmico, realizando a maior parte do trabalho fora da thread principal em um web worker</li>
  118. </ul>
  119. </div>
  120. </body>
  121. </html>