Class Mesh

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

Mesh също е достъпен чрез импорт на подпът @aspose/3d/entities.

Mesh е основната полигонална геометрична единица в @aspose/3d. Той съхранява позициите на върховете като контролни точки, определя полигоналните лица чрез списъци с индекси на върховете и поддържа множество слоеве от данни за елементите на върховете, като нормали и UV координати.

export class Mesh extends Geometry

Examples

A3DObject ← SceneObject ← Entity ← Geometry ← Mesh

Examples

Създайте мрежа от един триъгълник, прикрепете я към сцената и я запазете като 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

Examples

ExamplesExamplesExamples
controlPointsVector4[]Позициите на върховете на мрежата. Всяка точка използва хомогенни координати (x, y, z, w). Добавете точки, като ги добавяте към този масив преди да дефинирате полигони.
polygonCountnumberСамо за четене. Броят на полигоните (лицеве), в момента дефинирани върху мрежата.
polygonsnumber[][]Само за четене. Таблицата с индекси на полигоните. Всеки запис е масив от индекси на контролни точки, които определят едно лице.
edgesnumber[]Списъкът с ръбове, използван за маркиране на твърди ръбове и задаване на тегло на гънка.
vertexElementsVertexElement[]Колекцията от слоеве на върховите елементи (нормали, UV координати, цветове на върховете и др.), прикрепени към тази мрежа.
visiblebooleanДали мрежата се рендерира. По подразбиране е true.
castShadowsbooleanДали мрежата хвърля сенки в поддържаните рендеръри. По подразбиране е true.
receiveShadowsbooleanДали мрежата получава сенки от други обекти. По подразбиране е true.

Examples

createPolygon(…indices)

Определя ново полигонално лице, използвайки предоставените индекси на контролни точки. Индексите трябва да се отнасят до валидни позиции в controlPoints.

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

Examples

...indices number[]

Три или повече нулево-базирани индекси в controlPoints масив, в посока на навиване обратно на часовниковата стрелка.

Examples

void

Examples

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

Examples

Mesh

Триангулираната мрежа.

Examples

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

Examples

Mesh

Този екземпляр на мрежата.


static union(a, b)

NOT IMPLEMENTED. Този метод е дефиниран в API повърхността, но хвърля Error('union is not implemented') по време на изпълнение. Не го извиквайте в продукционен код.

Извършва булево обединение на две мрежи. Резултатът съдържа комбинирания обем и на двете входни мрежи.

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

Examples

a Mesh

Първият операнд – мрежа.

b Mesh

Вторият операнд – мрежа.

Examples

Mesh

Нова мрежа, представляваща обединението на a и b.

Examples

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

Examples

a Mesh

Базовата мрежа.

b Mesh

Мрежата, от която се изважда a.

Examples

Mesh

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

Examples

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

Examples

a Mesh

Първият операнд – мрежа.

b Mesh

Вторият операнд – мрежа.

Examples

Mesh

Нова мрежа, представляваща пресечната точка на a и b.

Examples

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

Examples

type VertexElementType

Типът на атрибута на върха, който да се създаде (например, VertexElementType.Normal).

mapping MappingMode (по избор)

Как данните на елементите се съпоставят с топологията на мрежата. По подразбиране е MappingMode.ControlPoint.

reference ReferenceMode (по избор)

Как индекси на елементите се отнасят към масива от данни. По подразбиране е ReferenceMode.Direct.

Examples

VertexElement

Новосъздаденият слой от елементи на върховете.


createElementUV(mapping, mappingMode?, referenceMode?)

Създава слой с UV координати върху тази мрежа.

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

Examples

mapping TextureMapping

UV каналът, който да се създаде (например, TextureMapping.Diffuse).

mappingMode MappingMode (по избор)

Как UV координатите се съпоставят с върховете.

referenceMode ReferenceMode (по избор)

Как данните за UV индекса се отнасят към UV масива.

Examples

VertexElementUV

Новосъздаденият слой на UV елемент.

Examples

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}`);
 Български