2
0

Creating-text.html 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <!DOCTYPE html>
  2. <html lang="ru">
  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>Создание текста ([name])</h1>
  11. <div>
  12. <p>
  13. Часто бывают случаи, когда вам может понадобиться использовать текст в вашем three.js приложение - вот
  14. несколько способов, как это сделать.
  15. </p>
  16. </div>
  17. <h2>1. DOM + CSS</h2>
  18. <div>
  19. <p>
  20. Использование HTML, как правило, является самым простым и быстрым способом добавления текста. Этот метод
  21. используется для наложения текста в большинстве three.js приложений.
  22. </p>
  23. <p>Вы можете добавлять содержимое в</p>
  24. <code>&lt;div id="info"&gt;Описание&lt;/div&gt;</code>
  25. <p>
  26. и использовать разметку CSS для абсолютного позиционирования над всеми остальным с
  27. z-index, особенно если вы используете полноэкранный режим three.js.
  28. </p>
  29. <code>
  30. #info {
  31. position: absolute;
  32. top: 10px;
  33. width: 100%;
  34. text-align: center;
  35. z-index: 100;
  36. display:block;
  37. }
  38. </code>
  39. </div>
  40. <h2>2. Использование [page:CSS2DRenderer] или [page:CSS3DRenderer]</h2>
  41. <div>
  42. <p>
  43. Используйте эти рендереры для отрисовки высококачественного текста, содержащегося в элементах DOM, в вашу сцену three.js.
  44. Это похоже на 1. за исключением того, что с помощью этих средств визуализации элементы могут быть более тесно и динамично интегрированы в сцену.
  45. </p>
  46. </div>
  47. <h2>3. Нарисуйте текст на холсте используя [page:Texture]</h2>
  48. <div>
  49. <p>Используйте этот способ, если вы хотите легко нарисовать текст на плоскости в вашем three.js сцене.</p>
  50. </div>
  51. <h2>4. Создайте модель в вашем любимом 3D-приложении и экспортируйте в three.js</h2>
  52. <div>
  53. <p>Используйте этот способ, если вы предпочитаете работать со своими 3d-приложениями и импортировать модели в three.js .</p>
  54. </div>
  55. <h2>5. Процедурная геометрия текста</h2>
  56. <div>
  57. <p>
  58. Если вы предпочитаете работать исключительно в three.js или создавать процедурные и динамические 3D
  59. текстовые геометрии, вы можете создать mesh, геометрия которой является экземпляром THREE.TextGeometry:
  60. </p>
  61. <p>
  62. <code>new THREE.TextGeometry( text, parameters );</code>
  63. </p>
  64. <p>
  65. Однако для того, чтобы это сработало, вашей текстовой геометрии потребуется экземпляр из THREE.Font
  66. должен быть установлен в его параметре "шрифт".
  67. Смотрите страницу [page:TextGeometry] для получения дополнительной информации о том, как это можно сделать, описания каждого
  68. принимаемого параметра и список шрифтов JSON, которые поставляются с THREE.js.
  69. </p>
  70. <h3>Примеры</h3>
  71. <p>
  72. [example:webgl_geometry_text WebGL / geometry / text]<br />
  73. [example:webgl_shadowmap WebGL / shadowmap]
  74. </p>
  75. <p>
  76. Если шрифт не работает или вы хотите использовать шрифт, которого там нет, есть учебное пособие по
  77. скрипту python для blender, который позволит экспортировать текст в Three.js в формате JSON:
  78. [link:http://www.jaanga.com/2012/03/blender-to-threejs-create-3d-text-with.html]
  79. </p>
  80. </div>
  81. <h2>6. Растровые шрифты</h2>
  82. <div>
  83. <p>
  84. Растровые шрифты (bitmap fonts) позволяют группировать глифы в единую BufferGeometry. Рендеринг BMFont
  85. поддерживает перенос слов, межбуквенный интервал, кернинг, поля расстояния со знаком со стандартными
  86. производными, многоканальные поля расстояния со знаком, шрифты с несколькими текстурами и многое другое.
  87. Смотрите [link:https://github.com/felixmariotto/three-mesh-ui three-mesh-ui] или [link:https://github.com/Jam3/three-bmfont-text three-bmfont-text].
  88. </p>
  89. <p>
  90. Стандартные шрифты доступны в таких проектах, как
  91. [link:https://github.com/etiennepinchon/aframe-fonts A-Frame Fonts], или вы можете создать свой собственный
  92. из любого .TTF шрифта, оптимизированный для включения только символов, необходимых для проекта.
  93. </p>
  94. <p>
  95. Некоторые полезные инструменты:
  96. </p>
  97. <ul>
  98. <li>[link:http://msdf-bmfont.donmccurdy.com/ msdf-bmfont-web] <i>(web-based)</i></li>
  99. <li>[link:https://github.com/soimy/msdf-bmfont-xml msdf-bmfont-xml] <i>(commandline)</i></li>
  100. <li>[link:https://github.com/libgdx/libgdx/wiki/Hiero hiero] <i>(desktop app)</i></li>
  101. </ul>
  102. </div>
  103. <h2>7. Текст Тройка (Troika Text)</h2>
  104. <div>
  105. <p>
  106. Пакет [link:https://www.npmjs.com/package/troika-three-text troika-three-text] отображает
  107. качественный сглаженный текст, использующий ту же технику, что и BMFonts, но работающий напрямую с любым .TTF
  108. или .WOFF файлом шрифта, чтобы вам не приходилось восстанавливать текстуру глифа в автономном режиме. Он также добавляет
  109. возможности, в том числе:
  110. </p>
  111. <ul>
  112. <li>Такие эффекты, как штрихи, отбрасываемые тени и кривизна</li>
  113. <li>Возможность применять любые three.js Материал, даже пользовательский шейдерный материал</li>
  114. <li>Поддержка лигатур шрифтов, скриптов с соединенными буквами и компоновки справа-налево/двунаправленно</li>
  115. <li>Оптимизация для больших объемов динамического текста, выполнение большей части работы вне основного потока в веб-воркере</li>
  116. </ul>
  117. </div>
  118. </body>
  119. </html>