Class Mesh

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

Mesh is ook beschikbaar via de sub‑pad import @aspose/3d/entities.

Mesh is de primaire polygoongeometrie‑entiteit in @aspose/3d. Het slaat vertexposities op als controlepunten, definieert polygoonvlakken door lijsten met vertex‑indices, en ondersteunt meerdere vertex‑elementgegevenslagen zoals normalen en UV‑coördinaten.

export class Mesh extends Geometry

ImageRenderOptions

A3DObject ← SceneObject ← Entity ← Geometry ← Mesh

ImageRenderOptions

Bouw een enkele driehoek‑mesh, voeg deze toe aan de scène en sla op als 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

ImageRenderOptions

ImageRenderOptionsImageRenderOptionsImageRenderOptions
controlPointsVector4[]De vertexposities van de mesh. Elk punt gebruikt homogene coördinaten (x, y, z, w). Voeg punten toe door ze naar deze array te pushen voordat je polygonen definieert.
polygonCountnumberAlleen-lezen. Het aantal polygonen (vlakken) dat momenteel op de mesh is gedefinieerd.
polygonsnumber[][]Alleen-lezen. De polygoon‑indextabel. Elke invoer is een array van controlepunt‑indices die één vlak definiëren.
edgesnumber[]De randlijst, gebruikt voor hard‑edge markering en vouwgewicht.
vertexElementsVertexElement[]De verzameling vertex‑elementlagen (normalen, UV’s, vertexkleuren, enz.) die aan deze mesh zijn gekoppeld.
visiblebooleanOf de mesh wordt gerenderd. Standaard is true.
castShadowsbooleanOf de mesh schaduwen werpt in ondersteunde renderers. Standaard is true.
receiveShadowsbooleanOf de mesh schaduwen ontvangt van andere objecten. Standaard is true.

ImageRenderOptions

createPolygon(…indices)

Definieert een nieuw polygoonvlak met behulp van de opgegeven controlepunt‑indices. Indices moeten verwijzen naar geldige posities in controlPoints.

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

ImageRenderOptions

...indices number[]

Drie of meer nulgebaseerde indexen in de controlPoints array, in tegen de klok in winding volgorde.

ImageRenderOptions

void

ImageRenderOptions

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

Converteert alle niet‑driehoekige polygonen in deze mesh naar driehoeken. Retourneert de getrianguleerde mesh (kan dezelfde instantie zijn of een nieuwe).

triangulate(): Mesh

ImageRenderOptions

Mesh

De getrianguleerde mesh.

ImageRenderOptions

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

Retourneert het mesh als een Mesh instantie. Voor Mesh objecten is dit een identiteitsbewerking; de methode is betekenisvoller op primitieve geometrische types die erven van Geometry.

toMesh(): Mesh

ImageRenderOptions

Mesh

Deze mesh‑instantie.


static union(a, b)

NOT IMPLEMENTED. Deze methode is gedefinieerd in de API, maar gooit Error('union is not implemented') tijdens runtime. Roep het niet aan in productcode.

Voert een Booleaanse unie uit van twee meshes. Het resultaat bevat het gecombineerde volume van beide invoerobjecten.

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

ImageRenderOptions

a Mesh

De eerste mesh operand.

b Mesh

De tweede mesh operand.

ImageRenderOptions

Mesh

Een nieuw mesh dat de unie van a en b.

ImageRenderOptions

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. Deze methode is gedefinieerd in de API, maar gooit Error('difference is not implemented') tijdens runtime. Roep het niet aan in productcode.

Voert een Booleaanse verschiloperatie uit, waarbij het volume van mesh b van mesh a.

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

ImageRenderOptions

a Mesh

De basismesh.

b Mesh

Het mesh waarvan afgetrokken wordt a.

ImageRenderOptions

Mesh

Een nieuw mesh dat weergeeft a minus b.

ImageRenderOptions

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. Deze methode is gedefinieerd in de API, maar gooit Error('intersect is not implemented') tijdens runtime. Roep het niet aan in productcode.

Voert een Booleaanse intersectie uit van twee meshes. Het resultaat bevat alleen het overlappende volume.

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

ImageRenderOptions

a Mesh

De eerste mesh operand.

b Mesh

De tweede mesh operand.

ImageRenderOptions

Mesh

Een nieuw mesh dat de intersectie van a en b.

ImageRenderOptions

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

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

createElement(type, mapping?, reference?)

Maakt een nieuw VertexElement gegevenslaag op dit mesh voor aangepaste per-vertex attributen.

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

ImageRenderOptions

type VertexElementType

Het type vertexattribuut om te maken (bijvoorbeeld, VertexElementType.Normal).

mapping MappingMode (optioneel)

Hoe de elementgegevens worden gemapt op de mesh-topologie. Standaard is MappingMode.ControlPoint.

reference ReferenceMode (optioneel)

Hoe de elementindices verwijzen naar de gegevensarray. Standaard is ReferenceMode.Direct.

ImageRenderOptions

VertexElement

De nieuw aangemaakte vertex-elementlaag.


createElementUV(mapping, mappingMode?, referenceMode?)

Maakt een UV-coördinatenlaag op deze mesh.

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

ImageRenderOptions

mapping TextureMapping

Het UV-kanaal om te maken (bijvoorbeeld, TextureMapping.Diffuse).

mappingMode MappingMode (optioneel)

Hoe UV-coördinaten worden gemapt op vertices.

referenceMode ReferenceMode (optioneel)

Hoe UV-indexgegevens verwijzen naar de UV-array.

ImageRenderOptions

VertexElementUV

De nieuw aangemaakte UV‑elementlaag.

ImageRenderOptions

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