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

NameTypeAccessDescription
edgesnumber[]ReadGets the edges.
polygonCountnumberReadGets the polygon count.
polygonsnumber[][]ReadGets the polygons.
deformersany[]ReadGets the deformers.
SignatureDescription
`constructor(name: stringnull, _heightMap: any, _transform: any, _triMesh: boolean
createPolygon()Adds a new polygon to the mesh
getPolygonSize(index: number)numberReturns the number of vertices in the polygon at the given index
toMesh()MeshReturns a Mesh instance representing the current object (identity conversion)
optimize(_vertexElements: boolean, _toleranceControlPoint: number, _toleranceNormal: number, _toleranceUV: number)MeshNot implemented in the FOSS edition — throws at runtime. Reduces mesh complexity using vertex element flag and tolerance values for control points, normals, and UVs
doBoolean(_op: any, _a: Mesh, _transformA: any, _b: Mesh, _transformB: any)MeshNot implemented in the FOSS edition — throws at runtime. Performs a boolean operation defined by _op on meshes _a and _b with respective transforms
isManifold()booleanNot implemented in the FOSS edition — throws at runtime. Returns true if manifold is set.
union(_a: Mesh, _b: Mesh)MeshNot implemented in the FOSS edition — throws at runtime. Returns a new Mesh that is the union of meshes _a and _b
difference(_a: Mesh, _b: Mesh)MeshNot implemented in the FOSS edition — throws at runtime. Returns a new Mesh that is the difference of mesh _a minus mesh _b
intersect(_a: Mesh, _b: Mesh)MeshNot implemented in the FOSS edition — throws at runtime.
triangulate()MeshConverts all polygons in the mesh to triangles and returns the mesh
getBoundingBox()anyReturns the bounding box.
getEntityRendererKey()anyNot implemented in the FOSS edition — throws at runtime. Returns the entity renderer key.

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

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`.

```typescript
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

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.

```typescript
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

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.

```typescript
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