Extruded Shape и Extruded Polygon

Extruded Shape в Babylon.js — это объект, который создаётся путём вытягивания 2D формы вдоль третьей оси (оси Z). Этот подход позволяет создавать сложные 3D-объекты на основе простых геометрий, таких как многоугольники. В Babylon.js этот процесс автоматизируется через класс ExtrudeShape.

Создание Extruded Shape

Чтобы создать extruded shape, необходимо задать форму, которая будет использоваться как база для экструдирования, и параметры вытягивания. Обычно форма представляет собой контур, состоящий из массива точек (2D-полигон).

Пример создания extruded shape:

var scene = new BABYLON.Scene(engine);
var shape = [  
    new BABYLON.Vector3(0, 0, 0),  
    new BABYLON.Vector3(1, 0, 0),  
    new BABYLON.Vector3(1, 1, 0),  
    new BABYLON.Vector3(0, 1, 0)
];

var extrudedShape = BABYLON.MeshBuilder.ExtrudeShape("extrudedShape", {shape: shape, depth: 2}, scene);

В этом примере создаётся форма, которая имеет четыре вершины, образующие квадрат, и она экструдируется на глубину 2 вдоль оси Z.

Параметры ExtrudeShape:

  • shape: Массив вершин, описывающий 2D форму.
  • depth: Глубина, на которую будет экструдироваться форма.
  • cap: Может быть установлен в BABYLON.Mesh.CAP_NONE, BABYLON.Mesh.CAP_START, или BABYLON.Mesh.CAP_END, чтобы указать, закрывать ли экструдированный объект на концах.
  • rotate: Вектор для поворота формы во время экструдирования.
  • faceUV: Массив, который задаёт текстуры для каждого из граней объекта.

Применение и возможности

Возможности extruded shape варьируются от простых геометрических форм до сложных объектов с отверстиями и изгибами. Например, можно создать сложный объект, который имитирует трубы, окна или даже компоненты архитектурных моделей.

Extruded Polygon в Babylon.js

Extruded Polygon представляет собой разновидность extruded shape, где 2D форма имеет произвольную многоугольную геометрию. Для этого используется метод ExtrudePolygon, который позволяет создавать многоугольники любой формы, а затем экструзировать их по оси Z.

Создание Extruded Polygon

Для создания экструзированного многоугольника необходимо задать не только контур многоугольника, но и глубину, на которую будет производиться экструзия.

Пример кода для создания экструзированного многоугольника:

var polygon = [
    new BABYLON.Vector3(0, 0, 0),  
    new BABYLON.Vector3(1, 0, 0),  
    new BABYLON.Vector3(1, 1, 0),  
    new BABYLON.Vector3(0, 1, 0)
];

var extrudedPolygon = BABYLON.MeshBuilder.ExtrudePolygon("extrudedPolygon", {polygon: polygon, depth: 2}, scene);

В этом примере задаётся простой квадратный многоугольник, который затем экструзируется на глубину 2.

Параметры ExtrudePolygon

  • polygon: Массив вершин, описывающих форму многоугольника.
  • depth: Глубина экструзии.
  • cap: Определяет, будет ли экструзия иметь закрытые концы.
  • rotate: Угол поворота многоугольника во время экструзии.

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

Применение Extruded Polygon

Extruded Polygon используется для создания объектов с многоугольными основаниями. Это может быть полезно для симуляции объектов с различной топологией, например, стен, крыш, оснований для различных конструкций.

Общее использование Extruded Shape и Extruded Polygon

Обе технологии позволяют значительно ускорить процесс создания сложных 3D-объектов. При моделировании объектов, таких как здания, трубопроводы или механизмы, экструзия из 2D-форм даёт возможность легко управлять глубиной, шириной и углами объектов, экономя время на моделировании.

Отличие Extruded Shape от Extruded Polygon

Основное различие между этими двумя подходами заключается в типе начальной геометрии. Extruded Shape используется для более простых форм, таких как прямоугольники, круги или эллипсы, в то время как Extruded Polygon применим для произвольных многоугольников, что даёт больше свободы в проектировании.

Экструзированные объекты в Babylon.js играют ключевую роль в создании интерактивных 3D-сцен и могут быть использованы в самых различных областях — от игр до архитектурных визуализаций.