Class Mesh

Pakke: @aspose/3d (v24.12.0)

Mesh er også tilgængelig via sub-path import @aspose/3d/entities.

Mesh er den primære polygongeometri‑enhed i @aspose/3d. Den gemmer vertexpositioner som kontrolpunkter, definerer polygonflader ved hjælp af lister af vertex‑indekser og understøtter flere lag af vertex‑elementdata såsom normaler og UV‑koordinater.

export class Mesh extends Geometry

A3DObject ← SceneObject ← Entity ← Geometry ← Mesh

Byg et enkelt trekants‑mesh, tilknyt det til scenen, og gem til 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

controlPointsVector4[]Vertexpositionerne for mesh‑en. Hvert punkt bruger homogene koordinater (x, y, z, w). Tilføj punkter ved at skubbe dem ind i dette array, før du definerer polygoner.
polygonCountnumberSkrivebeskyttet. Antallet af polygoner (flader), der i øjeblikket er defineret på mesh‑en.
polygonsnumber[][]Skrivebeskyttet. Polygonindekstabelen. Hver post er et array af kontrolpunkt‑indekser, der definerer én flade.
edgesnumber[]Kantlisten, brugt til markering af hårde kanter og vægtning af folder.
vertexElementsVertexElement[]Samlingen af vertex‑elementlag (normaler, UV‑er, vertex‑farver osv.), der er knyttet til denne mesh.
visiblebooleanOm mesh‑en bliver gengivet. Standard er true.
castShadowsbooleanOm mesh‑en kaster skygger i understøttede renderere. Standard er true.
receiveShadowsbooleanOm mesh‑en modtager skygger fra andre objekter. Standard er true.

createPolygon(…indices)

Definerer en ny polygonflade ved hjælp af de angivne kontrolpunkt‑indekser. Indekser skal referere til gyldige positioner i controlPoints.

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

...indices number[]

Tre eller flere nulbaserede indekser i controlPoints array, i mod-ur-rotationens viklingsorden.

void

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()

Konverterer alle ikke‑trekantede polygoner i dette mesh til trekanter. Returnerer det triangulerede mesh (kan være den samme instans eller en ny).

triangulate(): Mesh

Mesh

Det triangulerede mesh.

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()

Returnerer mesh’en som en Mesh instans. For Mesh objekter er dette en identitetsoperation; metoden er mere meningsfuld på primitive geometrityper, der arver fra Geometry.

toMesh(): Mesh

Mesh

Denne mesh-instans.


static union(a, b)

NOT IMPLEMENTED. Denne metode er defineret i API’et, men kaster Error('union is not implemented') ved kørsel. Kald den ikke i produktionskode.

Udfører en boolesk union af to mesh’er. Resultatet indeholder den samlede volumen af begge input.

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

a Mesh

Den første mesh-operand.

b Mesh

Den anden mesh-operand.

Mesh

Et nyt mesh, der repræsenterer unionen af a og b.

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. Denne metode er defineret i API’et, men kaster Error('difference is not implemented') ved kørsel. Kald den ikke i produktionskode.

Udfører en boolesk forskel, hvor volumen af mesh trækkes fra b fra mesh a.

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

a Mesh

Den grundlæggende mesh.

b Mesh

Mesh’en, der skal trækkes fra a.

Mesh

Et nyt mesh, der repræsenterer a minus b.

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. Denne metode er defineret i API’et, men kaster Error('intersect is not implemented') ved kørsel. Kald den ikke i produktionskode.

Udfører en boolesk intersection af to mesh’er. Resultatet indeholder kun det overlappende volumen.

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

a Mesh

Den første mesh-operand.

b Mesh

Den anden mesh-operand.

Mesh

Et nyt mesh, der repræsenterer skæringen af a og b.

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

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

createElement(type, mapping?, reference?)

Opretter en ny VertexElement datalag på dette mesh til brugerdefinerede per-vertex-attributter.

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

type VertexElementType

Typen af vertex-attribut, der skal oprettes (for eksempel, VertexElementType.Normal).

mapping MappingMode (valgfri)

Hvordan elementdataene kortlægges til mesh-topologien. Standard er MappingMode.ControlPoint.

reference ReferenceMode (valgfri)

Hvordan elementindekserne refererer til dataarrayet. Standard er ReferenceMode.Direct.

VertexElement

Det nyoprettede vertex-elementlag.


createElementUV(mapping, mappingMode?, referenceMode?)

Opretter et UV-koordinatlag på dette mesh.

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

mapping TextureMapping

UV-kanalen, der skal oprettes (for eksempel, TextureMapping.Diffuse).

mappingMode MappingMode (valgfri)

Hvordan UV-koordinater kortlægges til vertexer.

referenceMode ReferenceMode (valgfri)

Hvordan UV-indeksdata refererer til UV-arrayet.

VertexElementUV

Det nyoprettede UV-elementlag.

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}`);
 Dansk