Обмен технологиями

Краткое руководство по работе с камерой Three.js

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Калибровка камеры — это фундаментальная концепция компьютерной 3D-графики, которая включает в себя настройку виртуальной камеры для имитации перспективы и поведения реальной камеры. В Three.js, популярной библиотеке JavaScript для 3D-рендеринга, понимание калибровки камеры имеет решающее значение для создания реалистичных и захватывающих 3D-сцен. В этой статье мы рассмотрим основы калибровки камеры в Three.js для новичков, желающих улучшить свои навыки работы с 3D-графикой.

Предварительные требования: прежде чем приступить к калибровке камеры, вы должны иметь базовые знания JavaScript, HTML и Three.js. Также будет полезно знание 3D-координат, преобразований и рендеринга.

Рекомендации по инструменту NSDT: Комплект для разработки текстур Three.js AI - Генератор синтетических данных YOLO - Онлайн-редактирование GLTF/GLB - Онлайн-преобразование формата 3D-модели - Программируемый редактор 3D-сцен. - Плагин экспорта 3D-модели REVIT - Семантическая поисковая система 3D-модели - Комплект разработки виртуальной оси Three.js - 3D-модель онлайн-уменьшения поверхности - Онлайн раскрой модели STL 

1. Настройте среду

Сначала создайте HTML-файл, содержащий необходимый шаблонный код, включая библиотеку Three.js:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Camera Calibration in Three.js</title>
  5. <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
  6. </head>
  7. <body>
  8. <script>
  9. // Your Three.js code will go here
  10. </script>
  11. </body>
  12. </html>

2. Создавайте сцены и камеры

Чтобы инициализировать Three.js, создайте сцену, камеру и средство рендеринга:

  1. // Set up the scene, camera, and renderer
  2. const scene = new THREE.Scene();
  3. const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
  4. const renderer = new THREE.WebGLRenderer();
  5. renderer.setSize(window.innerWidth, window.innerHeight);
  6. document.body.appendChild(renderer.domElement);

3. Расположите камеру

Положение камеры определяет точку обзора, с которой визуализируется сцена. Вы можете расположить камеру в трехмерном пространстве, используя ее свойство Position:

camera.position.set(0, 5, 10);

Этот код устанавливает положение камеры (0, 5, 10), что означает, что в трехмерном мире она находится в координатах x=0, y=5 и z=10.

4. Укажите на камеру

камераlookAtМетод позволяет вам определить точку, на которую он должен смотреть:

  1. const target = new THREE.Vector3(0, 0, 0);
  2. camera.lookAt(target);

В этом примере камера ориентирована на точку (0, 0, 0), которая является началом сцены.

5. Поле зрения (FOV)

Поле зрения камеры (FOV) определяет размер сцены, видимой через камеру. Чем выше значение FOV, тем шире поле зрения, а чем ниже значение, тем больше увеличивается поле зрения.вы можете использоватьfovНастройка атрибута FOV:

camera.fov = 60; // Example FOV value in degrees

6. Соотношение сторон

Соотношение сторон камеры определяет форму визуализируемой сцены. Обычно он равен ширине области просмотра, деленной на ее высоту:

  1. const aspectRatio = window.innerWidth / window.innerHeight;
  2. camera.aspect = aspectRatio;

7. Ближняя плоскость отсечения и дальняя плоскость отсечения.

Ближняя и дальняя плоскости отсечения определяют видимый диапазон расстояний от камеры. Объекты, находящиеся ближе ближней плоскости или дальше дальней плоскости, будут обрезаны и не визуализируются.вы можете использоватьnearиfarСвойства устанавливают следующие значения:

  1. camera.near = 0.1;
  2. camera.far = 1000;

8. Диафрагма

Диафрагма, также известная как «апертура камеры» или «апертура объектива», является ключевым фактором в калибровке камеры и влияет на глубину резкости и количество света, попадающего в камеру. В Three.js мы можем имитировать эффект диафрагмы, регулируя свойство диафрагмы камеры.

  1. // Aperture (Camera's f-stop) - Controls depth of field and light gathering
  2. const aperture = 0.1; // Increase this value for a shallower depth of field
  3. camera.aperture = aperture;

9. Добавляем объекты на сцену

Прежде чем визуализировать сцену, давайте добавим несколько 3D-объектов, чтобы сделать калибровку более заметной:

  1. const geometry = new THREE.BoxGeometry();
  2. const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
  3. const cube = new THREE.Mesh(geometry, material);
  4. scene.add(cube);

10. Рендеринг сцены

Теперь, когда у нас настроены сцена, камера и объекты, мы можем визуализировать сцену:

  1. function animate() {
  2. requestAnimationFrame(animate);
  3. renderer.render(scene, camera);
  4. }
  5. animate();

11. Заключение

Поздравляем! Вы сделали свой первый шаг в мир калибровки камеры Three.js. Понимая свойства камеры и их влияние на визуализируемую сцену, вы можете создавать визуально привлекательные и захватывающие трехмерные изображения. Поэкспериментируйте с различными положениями камеры, значениями поля зрения и объектами на сцене, чтобы реализовать весь потенциал Three.js и калибровки камеры.


Оригинальная ссылка:Краткое руководство по камере Three.js - BimAnt