Оглавление
- 1 Какой формат 3D-моделей лучше всего поддерживается?
- 2 Почему в примерах используются метатеги viewport?
- 3 Как сохранить масштаб сцены при изменении размера?
- 4 Почему часть моего объекта невидима?
- 5 Почему three.js иногда возвращает странные результаты при неверных входных данных?
- 6 Можно ли использовать three.js в Node.js?
Какой формат 3D-моделей лучше всего поддерживается?
Рекомендуемым форматом для импорта и экспорта ресурсов является glTF (GL Transmission Format). Поскольку glTF ориентирован на доставку ресурсов во время выполнения, он компактен для передачи и быстро загружается.
three.js также предоставляет загрузчики для многих других популярных форматов, таких как FBX, Collada или OBJ. Тем не менее, вам всегда следует стараться сначала наладить рабочий процесс на основе glTF в ваших проектах. Для получения дополнительной информации см. загрузка 3D-моделей.
Почему в примерах используются метатеги viewport?
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
Эти теги управляют размером и масштабом области просмотра для мобильных браузеров (где содержимое страницы может отображаться в размере, отличном от видимой области просмотра).
Как сохранить масштаб сцены при изменении размера?
Мы хотим, чтобы все объекты, независимо от их расстояния до камеры, отображались в одном и том же размере, даже при изменении размера окна. Ключевое уравнение для решения этой задачи выглядит так:
visible_height = 2 * Math.tan( ( Math.PI / 180 ) * camera.fov / 2 ) * distance_from_camera;
Если мы увеличиваем высоту окна на определенный процент, то мы хотим, чтобы видимая высота на всех расстояниях увеличилась на тот же процент. Это невозможно сделать, изменив положение камеры. Вместо этого необходимо изменить поле зрения камеры. Пример.
Почему часть моего объекта невидима?
Это может быть связано с отсечением граней. Грани имеют ориентацию, которая определяет, какая сторона является лицевой, а какая — обратной. В нормальных условиях обратная сторона удаляется. Чтобы проверить, является ли это вашей проблемой, измените сторону материала на THREE.DoubleSide.
material.side = THREE.DoubleSide;
Почему three.js иногда возвращает странные результаты при неверных входных данных?
По соображениям производительности, three.js в большинстве случаев не проверяет входные данные. Это ответственность вашего приложения — убедиться, что все входные данные корректны.
Можно ли использовать three.js в Node.js?
Поскольку three.js создан для веба, он зависит от API браузера и DOM, которые не всегда существуют в Node.js. Некоторые из этих проблем можно избежать, используя полифиллы, такие как headless-gl и jsdom-global, или заменяя компоненты, такие как TextureLoader, на пользовательские альтернативы. Другие API DOM могут быть тесно связаны с кодом, который их использует, и их будет сложнее обойти. Мы приветствуем простые и поддерживаемые pull-запросы для улучшения поддержки Node.js, но рекомендуем сначала открыть issue, чтобы обсудить ваши улучшения.

