Loading-3D-models.html 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  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>Загрузка 3D-моделей ([name])</h1>
  11. <p>
  12. 3D-модели доступны в сотнях форматов, каждый из которых имеет различные
  13. цели, разнообразные функции и различную сложность. Хотя three.js предоставляет множество
  14. <a href="https://github.com/mrdoob/three.js/tree/dev/examples/jsm/loaders" target="_blank" rel="noopener">
  15. загрузчиков</a>, выбор правильного формата и
  16. рабочего процесса сэкономит время и не разочарует в дальнейшем. С некоторыми форматами
  17. сложно работать, они неэффективны для работы в реальном времени или просто не
  18. поддерживаются в полной мере в настоящее время.
  19. </p>
  20. <p>
  21. В этом руководстве представлен рабочий процесс, рекомендуемый для большинства пользователей, и рекомендации
  22. о том, что предпринять, если что-то пойдет не так, как ожидалось.
  23. </p>
  24. <h2></h2>
  25. <p>
  26. Если вы новичок в управлении локальным сервером, начните с раздела
  27. [link:#manual/introduction/Installation installation] (Локальная разработка).
  28. Многих распространенных ошибок при просмотре 3D-моделей можно избежать, правильно разместив файлы.
  29. </p>
  30. <h2>Прежде чем начать</h2>
  31. <p>
  32. Там, где это возможно, мы рекомендуем использовать glTF (GL Transmission Format). Оба
  33. <small>.GLB</small> и <small>.GLTF</small> версии формата
  34. хорошо поддерживаются. Поскольку glTF ориентирован на доставку ресурсов во время выполнения, он
  35. компактен для передачи и быстр для загрузки. Объекты включают в себя mesh, материалы,
  36. текстуры, скины, скелеты, цели морфинга, анимацию, освещение и
  37. камеры.
  38. </p>
  39. <p>
  40. Файлы glTF, находящиеся в открытом доступе, доступны на таких сайтах, как
  41. <a href="https://sketchfab.com/models?features=downloadable&sort_by=-likeCount&type=models" target="_blank" rel="noopener">
  42. Sketchfab</a>, так же есть различные инструменты включающие экспорт glTF:
  43. </p>
  44. <ul>
  45. <li><a href="https://www.blender.org/" target="_blank" rel="noopener">Blender</a> от Blender Foundation</li>
  46. <li><a href="https://www.allegorithmic.com/products/substance-painter" target="_blank" rel="noopener">Substance Painter</a> от Allegorithmic</li>
  47. <li><a href="https://www.foundry.com/products/modo" target="_blank" rel="noopener">Modo</a> от Foundry</li>
  48. <li><a href="https://www.marmoset.co/toolbag/" target="_blank" rel="noopener">Toolbag</a> от Marmoset</li>
  49. <li><a href="https://www.sidefx.com/products/houdini/" target="_blank" rel="noopener">Houdini</a> от SideFX</li>
  50. <li><a href="https://labs.maxon.net/?p=3360" target="_blank" rel="noopener">Cinema 4D</a> от MAXON</li>
  51. <li><a href="https://github.com/KhronosGroup/COLLADA2GLTF" target="_blank" rel="noopener">COLLADA2GLTF</a> от Khronos Group</li>
  52. <li><a href="https://github.com/facebookincubator/FBX2glTF" target="_blank" rel="noopener">FBX2GLTF</a> от Facebook</li>
  53. <li><a href="https://github.com/AnalyticalGraphicsInc/obj2gltf" target="_blank" rel="noopener">OBJ2GLTF</a> от Analytical Graphics Inc</li>
  54. <li><a href="http://github.khronos.org/glTF-Project-Explorer/" target="_blank" rel="noopener">…и многое другое</a></li>
  55. </ul>
  56. <p>
  57. Если предпочитаемые вами инструменты не поддерживают glTF, рассмотрите возможность запроса экспорта glTF у авторов или опубликуйте
  58. <a href="https://github.com/KhronosGroup/glTF/issues/1051" target="_blank" rel="noopener">в ветке glTF roadmap</a>.
  59. </p>
  60. <p>
  61. Если glTF не подходит, используйте популярные форматы, такие как FBX, OBJ или COLLADA
  62. также доступны и регулярно обновляются.
  63. </p>
  64. <h2>Loading</h2>
  65. <p>
  66. Только несколько загрузчиков (например, [page:ObjectLoader]) включены по умолчанию с
  67. three.js — другие должны быть добавлены в ваше приложение индивидуально.
  68. </p>
  69. <code>
  70. import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
  71. </code>
  72. <p>
  73. После того, как вы импортировали загрузчик, вы готовы добавить модель в свою сцену. Синтаксис отличается у
  74. разных загрузчиков — при использовании другого формата ознакомьтесь с примерами и документацией для этого
  75. загрузчика. Для glTF использование с глобальными скриптами было бы:
  76. </p>
  77. <code>
  78. const loader = new GLTFLoader();
  79. loader.load( 'path/to/model.glb', function ( gltf ) {
  80. scene.add( gltf.scene );
  81. }, undefined, function ( error ) {
  82. console.error( error );
  83. } );
  84. </code>
  85. <p>
  86. См. [page:GLTFLoader GLTFLoader documentation] для получения более подробной информации.
  87. </p>
  88. <h2>Диагностика</h2>
  89. <p>
  90. Вы потратили часы на создание шедевра ручной работы, загружаете его на
  91. веб—страницу и - о нет! 😭 Он искажен, неправильно окрашен или полностью отсутствует.
  92. Начните с выполнения следующих действий по устранению неполадок:
  93. </p>
  94. <ol>
  95. <li>
  96. Проверьте консоль JavaScript на наличие ошибок и убедитесь, что вы использовали
  97. обратный вызов `onError` при вызове `.load()` для регистрации результата.
  98. </li>
  99. <li>
  100. Просмотрите модель в другом приложении. Для glTF, средства просмотра с помощью перетаскивания
  101. доступны для
  102. <a href="https://gltf-viewer.donmccurdy.com/" target="_blank" rel="noopener">three.js</a> и
  103. <a href="https://sandbox.babylonjs.com/" target="_blank" rel="noopener">babylon.js</a>. Если модель
  104. отображается правильно в одном или нескольких приложениях,
  105. <a href="https://github.com/mrdoob/three.js/issues/new" target="_blank" rel="noopener">сообщить об ошибке в three.js</a>.
  106. Если модель не может быть показана ни в одном приложении, мы настоятельно рекомендуем предоставить приложение
  107. (можно в песочнице) для воспроизведения бага.
  108. </li>
  109. <li>
  110. Попробуйте увеличить или уменьшить масштаб модели в 1000 раз. Многие модели
  111. масштабируются по-разному, и большие модели могут не отображаться, если камера находится
  112. внутри модели.
  113. </li>
  114. <li>
  115. Попробуйте добавить и расположить источник света. Модель может быть скрыта в темноте.
  116. </li>
  117. <li>
  118. Ищите неудачные запросы текстур на вкладке сеть, например
  119. `"C:\\Path\To\Model\texture.jpg "`. Вместо этого используйте пути относительно вашей
  120. модели, например `images/texture.jpg ` — для этого может потребоваться
  121. редактирование файла модели в текстовом редакторе.
  122. </li>
  123. </ol>
  124. <h2>Помощь</h2>
  125. <p>
  126. Если вы прошли шаги описанные выше для устранения неполадок, а ваша модель
  127. по-прежнему не работает, правильный подход это обращение за помощью которое поможет вам
  128. быстрее найти решение. Разместите вопрос на
  129. <a href="https://discourse.threejs.org/" target="_blank" rel="noopener">форуме three.js</a> и, по возможности,
  130. приложите свою модель (или более простую модель с той же проблемой) в любых
  131. доступных вам форматах. Предоставьте достаточно информации, чтобы кто-то другой мог воспроизвести
  132. проблему быстро — в идеале, живая демонстрация.
  133. </p>
  134. </body>
  135. </html>