Class Mesh

Пакет: @aspose/3d (v24.12.0)

Mesh також доступний через імпорт підшляху @aspose/3d/entities.

Mesh є основною сутністю полігональної геометрії в @aspose/3d. Вона зберігає позиції вершин як контрольні точки, визначає полігональні грані за списками індексів вершин і підтримує кілька шарів даних елементів вершин, таких як нормалі та UV‑координати.

export class Mesh extends Geometry

Enumerations

A3DObject ← SceneObject ← Entity ← Geometry ← Mesh

Enumerations

Створіть один трикутний меш, приєднайте його до сцени та збережіть у форматі GLB.

import { Scene, Vector4 } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';

// Create the mesh and define three control points (vertices)
const mesh = new Mesh();
mesh.controlPoints.push(
  new Vector4(0, 1, 0, 1),   // apex
  new Vector4(-1, 0, 0, 1),  // bottom-left
  new Vector4(1, 0, 0, 1),   // bottom-right
);

// Define one triangular polygon using vertex indices
mesh.createPolygon(0, 1, 2);

// Attach the mesh to the scene and save (extension infers GLB format)
const scene = new Scene();
scene.rootNode.createChildNode('triangle', mesh);
scene.save('triangle.glb');
console.log(`Polygon count: ${mesh.polygonCount}`); // 1

Enumerations

EnumerationsEnumerationsEnumerations
controlPointsVector4[]Позиції вершин сітки. Кожна точка використовує однорідні координати (x, y, z, w). Додавайте точки, додаючи їх у цей масив перед визначенням полігонів.
polygonCountnumberТільки для читання. Кількість полігонів (грані), які наразі визначені у меші.
polygonsnumber[][]Тільки для читання. Таблиця індексів полігонів. Кожен запис — це масив індексів контрольних точок, що визначають одну грань.
edgesnumber[]Список ребер, що використовується для позначення жорстких ребер та ваги складок.
vertexElementsVertexElement[]Колекція шарів елементів вершини (нормалі, UV‑координати, кольори вершин тощо), прикріплених до цього меша.
visiblebooleanЧи рендериться меш. За замовчуванням — true.
castShadowsbooleanЧи створює меш тіні у підтримуваних рендерерах. За замовчуванням — true.
receiveShadowsbooleanЧи отримує меш тіні від інших об’єктів. За замовчуванням — true.

Enumerations

createPolygon(…indices)

Визначає нову грань полігона, використовуючи надані індекси контрольних точок. Індекси мають посилатися на дійсні позиції у controlPoints.

createPolygon(...indices: number[]): void

Enumerations

...indices number[]

Три або більше індексів, що нумеруються з нуля, у controlPoints масиві, у проти годинникової стрілки порядку обертання.

Enumerations

void

Enumerations

import { Vector4 } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';

const mesh = new Mesh();
mesh.controlPoints.push(
  new Vector4(0, 0, 0, 1),
  new Vector4(1, 0, 0, 1),
  new Vector4(1, 1, 0, 1),
  new Vector4(0, 1, 0, 1),
);
// Define a quad as two triangles, or a single quad polygon:
mesh.createPolygon(0, 1, 2, 3);
console.log(`Polygons: ${mesh.polygonCount}`); // 1

triangulate()

Перетворює всі не трикутні полігони в цьому меші на трикутники. Повертає триангуляційний меш (може бути тим же екземпляром або новим).

triangulate(): Mesh

Enumerations

Mesh

Триангуляційний меш.

Enumerations

import { Vector4 } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';

const mesh = new Mesh();
mesh.controlPoints.push(
  new Vector4(0, 0, 0, 1),
  new Vector4(1, 0, 0, 1),
  new Vector4(1, 1, 0, 1),
  new Vector4(0, 1, 0, 1),
);
mesh.createPolygon(0, 1, 2, 3); // quad
const triangulated = mesh.triangulate();
console.log(`Polygons after triangulation: ${triangulated.polygonCount}`); // 2

toMesh()

Повертає сітку як Mesh екземпляр. Для Mesh об’єктів це операція ідентичності; метод має більше сенсу для примітивних типів геометрії, які успадковують від Geometry.

toMesh(): Mesh

Enumerations

Mesh

Цей екземпляр Mesh.


static union(a, b)

NOT IMPLEMENTED. Цей метод визначений у API, але викидає Error('union is not implemented') під час виконання. Не викликайте його у продакшн-коді.

Виконує булеве об’єднання двох Mesh. Результат містить сумарний об’єм обох вхідних даних.

static union(a: Mesh, b: Mesh): Mesh

Enumerations

a Mesh

Перший операнд сітки.

b Mesh

Другий операнд сітки.

Enumerations

Mesh

Нова сітка, що представляє об’єднання a і b.

Enumerations

import { Mesh } from '@aspose/3d/entities';

// Assumes meshA and meshB are already populated Mesh instances
const combined = Mesh.union(meshA, meshB);
console.log(`Union polygon count: ${combined.polygonCount}`);

static difference(a, b)

NOT IMPLEMENTED. Цей метод визначений у API, але викидає Error('difference is not implemented') під час виконання. Не викликайте його у продакшн‑коді.

Виконує булеву різницю, віднімаючи об’єм сітки b з сітки a.

static difference(a: Mesh, b: Mesh): Mesh

Enumerations

a Mesh

Базова Mesh.

b Mesh

Сітка, з якої треба відняти a.

Enumerations

Mesh

Нова сітка, що представляє a мінус b.

Enumerations

import { Mesh } from '@aspose/3d/entities';

const result = Mesh.difference(meshA, meshB);
console.log(`Difference polygon count: ${result.polygonCount}`);

static intersect(a, b)

NOT IMPLEMENTED. Цей метод визначений у API, але викидає Error('intersect is not implemented') під час виконання. Не викликайте його у продакшн-коді.

Виконує булеве перетинання двох сіток. Результат містить лише об’єм, що перекривається.

static intersect(a: Mesh, b: Mesh): Mesh

Enumerations

a Mesh

Перший операнд сітки.

b Mesh

Другий операнд сітки.

Enumerations

Mesh

Новий меш, що представляє перетин a і b.

Enumerations

import { Mesh } from '@aspose/3d/entities';

const overlap = Mesh.intersect(meshA, meshB);
console.log(`Intersection polygon count: ${overlap.polygonCount}`);

createElement(type, mapping?, reference?)

Створює новий VertexElement шар даних на цьому меші для користувацьких атрибутів вершини.

createElement(
  type: VertexElementType,
  mapping?: MappingMode,
  reference?: ReferenceMode
): VertexElement

Enumerations

type VertexElementType

Тип атрибуту вершини, який потрібно створити (наприклад, VertexElementType.Normal).

mapping MappingMode (необов’язково)

Як дані елементів відображаються на топологію сітки. За замовчуванням MappingMode.ControlPoint.

reference ReferenceMode (необов’язково)

Як індекси елементів посилаються на масив даних. За замовчуванням ReferenceMode.Direct.

Enumerations

VertexElement

Новостворений шар елементу вершини.


createElementUV(mapping, mappingMode?, referenceMode?)

Створює шар UV‑координат у цій сітці.

createElementUV(
  mapping: TextureMapping,
  mappingMode?: MappingMode,
  referenceMode?: ReferenceMode
): VertexElementUV

Enumerations

mapping TextureMapping

Канал UV, який створюється (наприклад, TextureMapping.Diffuse).

mappingMode MappingMode (необов’язково)

Як UV‑координати відображаються на вершини.

referenceMode ReferenceMode (необов’язково)

Як дані індексів UV посилаються на масив UV.

Enumerations

VertexElementUV

Новостворений шар UV‑елементу.

Enumerations

import { Mesh } from '@aspose/3d/entities';
import { TextureMapping } from '@aspose/3d';

const mesh = new Mesh();
// ... define control points and polygons ...
const uvLayer = mesh.createElementUV(TextureMapping.Diffuse);
console.log(`UV element created: ${uvLayer !== undefined}`);
 Українська