You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
9.7 KiB
165 lines
9.7 KiB
<!DOCTYPE html>
|
|
<html lang="ru">
|
|
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<base href="../../../" />
|
|
<script src="page.js"></script>
|
|
<link type="text/css" rel="stylesheet" href="page.css" />
|
|
</head>
|
|
|
|
<body>
|
|
<h1>Загрузка 3D-моделей ([name])</h1>
|
|
|
|
<p>
|
|
3D-модели доступны в сотнях форматов, каждый из которых имеет различные
|
|
цели, разнообразные функции и различную сложность. Хотя three.js предоставляет множество
|
|
<a href="https://github.com/mrdoob/three.js/tree/dev/examples/jsm/loaders" target="_blank" rel="noopener">
|
|
загрузчиков</a>, выбор правильного формата и
|
|
рабочего процесса сэкономит время и не разочарует в дальнейшем. С некоторыми форматами
|
|
сложно работать, они неэффективны для работы в реальном времени или просто не
|
|
поддерживаются в полной мере в настоящее время.
|
|
</p>
|
|
|
|
<p>
|
|
В этом руководстве представлен рабочий процесс, рекомендуемый для большинства пользователей, и рекомендации
|
|
о том, что предпринять, если что-то пойдет не так, как ожидалось.
|
|
</p>
|
|
|
|
<h2></h2>
|
|
|
|
<p>
|
|
Если вы новичок в управлении локальным сервером, начните с раздела
|
|
[link:#manual/introduction/How-to-run-things-locally how to run things locally] (Локальная разработка).
|
|
Многих распространенных ошибок при просмотре 3D-моделей можно избежать, правильно разместив файлы.
|
|
</p>
|
|
|
|
<h2>Прежде чем начать</h2>
|
|
|
|
<p>
|
|
Там, где это возможно, мы рекомендуем использовать glTF (GL Transmission Format). Оба
|
|
<small>.GLB</small> и <small>.GLTF</small> версии формата
|
|
хорошо поддерживаются. Поскольку glTF ориентирован на доставку ресурсов во время выполнения, он
|
|
компактен для передачи и быстр для загрузки. Объекты включают в себя mesh, материалы,
|
|
текстуры, скины, скелеты, цели морфинга, анимацию, освещение и
|
|
камеры.
|
|
</p>
|
|
|
|
<p>
|
|
Файлы glTF, находящиеся в открытом доступе, доступны на таких сайтах, как
|
|
<a href="https://sketchfab.com/models?features=downloadable&sort_by=-likeCount&type=models" target="_blank" rel="noopener">
|
|
Sketchfab</a>, так же есть различные инструменты включающие экспорт glTF:
|
|
</p>
|
|
|
|
<ul>
|
|
<li><a href="https://www.blender.org/" target="_blank" rel="noopener">Blender</a> от Blender Foundation</li>
|
|
<li><a href="https://www.allegorithmic.com/products/substance-painter" target="_blank" rel="noopener">Substance Painter</a> от Allegorithmic</li>
|
|
<li><a href="https://www.foundry.com/products/modo" target="_blank" rel="noopener">Modo</a> от Foundry</li>
|
|
<li><a href="https://www.marmoset.co/toolbag/" target="_blank" rel="noopener">Toolbag</a> от Marmoset</li>
|
|
<li><a href="https://www.sidefx.com/products/houdini/" target="_blank" rel="noopener">Houdini</a> от SideFX</li>
|
|
<li><a href="https://labs.maxon.net/?p=3360" target="_blank" rel="noopener">Cinema 4D</a> от MAXON</li>
|
|
<li><a href="https://github.com/KhronosGroup/COLLADA2GLTF" target="_blank" rel="noopener">COLLADA2GLTF</a> от Khronos Group</li>
|
|
<li><a href="https://github.com/facebookincubator/FBX2glTF" target="_blank" rel="noopener">FBX2GLTF</a> от Facebook</li>
|
|
<li><a href="https://github.com/AnalyticalGraphicsInc/obj2gltf" target="_blank" rel="noopener">OBJ2GLTF</a> от Analytical Graphics Inc</li>
|
|
<li><a href="http://github.khronos.org/glTF-Project-Explorer/" target="_blank" rel="noopener">…и многое другое</a></li>
|
|
</ul>
|
|
|
|
<p>
|
|
Если предпочитаемые вами инструменты не поддерживают glTF, рассмотрите возможность запроса экспорта glTF у авторов или опубликуйте
|
|
<a href="https://github.com/KhronosGroup/glTF/issues/1051" target="_blank" rel="noopener">в ветке glTF roadmap</a>.
|
|
</p>
|
|
|
|
<p>
|
|
Если glTF не подходит, используйте популярные форматы, такие как FBX, OBJ или COLLADA
|
|
также доступны и регулярно обновляются.
|
|
</p>
|
|
|
|
<h2>Loading</h2>
|
|
|
|
<p>
|
|
Только несколько загрузчиков (например, [page:ObjectLoader]) включены по умолчанию с
|
|
three.js — другие должны быть добавлены в ваше приложение индивидуально.
|
|
</p>
|
|
|
|
<code>
|
|
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
|
|
</code>
|
|
|
|
<p>
|
|
После того, как вы импортировали загрузчик, вы готовы добавить модель в свою сцену. Синтаксис отличается у
|
|
разных загрузчиков — при использовании другого формата ознакомьтесь с примерами и документацией для этого
|
|
загрузчика. Для glTF использование с глобальными скриптами было бы:
|
|
</p>
|
|
|
|
<code>
|
|
const loader = new GLTFLoader();
|
|
|
|
loader.load( 'path/to/model.glb', function ( gltf ) {
|
|
|
|
scene.add( gltf.scene );
|
|
|
|
}, undefined, function ( error ) {
|
|
|
|
console.error( error );
|
|
|
|
} );
|
|
</code>
|
|
|
|
<p>
|
|
См. [page:GLTFLoader GLTFLoader documentation] для получения более подробной информации.
|
|
</p>
|
|
|
|
<h2>Диагностика</h2>
|
|
|
|
<p>
|
|
Вы потратили часы на создание шедевра ручной работы, загружаете его на
|
|
веб—страницу и - о нет! 😭 Он искажен, неправильно окрашен или полностью отсутствует.
|
|
Начните с выполнения следующих действий по устранению неполадок:
|
|
</p>
|
|
|
|
<ol>
|
|
<li>
|
|
Проверьте консоль JavaScript на наличие ошибок и убедитесь, что вы использовали
|
|
обратный вызов `onError` при вызове `.load()` для регистрации результата.
|
|
</li>
|
|
<li>
|
|
Просмотрите модель в другом приложении. Для glTF, средства просмотра с помощью перетаскивания
|
|
доступны для
|
|
<a href="https://gltf-viewer.donmccurdy.com/" target="_blank" rel="noopener">three.js</a> и
|
|
<a href="https://sandbox.babylonjs.com/" target="_blank" rel="noopener">babylon.js</a>. Если модель
|
|
отображается правильно в одном или нескольких приложениях,
|
|
<a href="https://github.com/mrdoob/three.js/issues/new" target="_blank" rel="noopener">сообщить об ошибке в three.js</a>.
|
|
Если модель не может быть показана ни в одном приложении, мы настоятельно рекомендуем предоставить приложение
|
|
(можно в песочнице) для воспроизведения бага.
|
|
</li>
|
|
<li>
|
|
Попробуйте увеличить или уменьшить масштаб модели в 1000 раз. Многие модели
|
|
масштабируются по-разному, и большие модели могут не отображаться, если камера находится
|
|
внутри модели.
|
|
</li>
|
|
<li>
|
|
Попробуйте добавить и расположить источник света. Модель может быть скрыта в темноте.
|
|
</li>
|
|
<li>
|
|
Ищите неудачные запросы текстур на вкладке сеть, например
|
|
`"C:\\Path\To\Model\texture.jpg "`. Вместо этого используйте пути относительно вашей
|
|
модели, например `images/texture.jpg ` — для этого может потребоваться
|
|
редактирование файла модели в текстовом редакторе.
|
|
</li>
|
|
</ol>
|
|
|
|
<h2>Помощь</h2>
|
|
|
|
<p>
|
|
Если вы прошли шаги описанные выше для устранения неполадок, а ваша модель
|
|
по-прежнему не работает, правильный подход это обращение за помощью которое поможет вам
|
|
быстрее найти решение. Разместите вопрос на
|
|
<a href="https://discourse.threejs.org/" target="_blank" rel="noopener">форуме three.js</a> и, по возможности,
|
|
приложите свою модель (или более простую модель с той же проблемой) в любых
|
|
доступных вам форматах. Предоставьте достаточно информации, чтобы кто-то другой мог воспроизвести
|
|
проблему быстро — в идеале, живая демонстрация.
|
|
</p>
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|