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 GeometryImageRenderOptions
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
| Name | Type | Access | Description |
|---|---|---|---|
edges | number[] | Read | Gets the edges. |
polygonCount | number | Read | Gets the polygon count. |
polygons | number[][] | Read | Gets the polygons. |
deformers | any[] | Read | Gets the deformers. |
| Signature | Description |
|---|---|
| `constructor(name: string | null, _heightMap: any, _transform: any, _triMesh: boolean |
createPolygon() | Adds a new polygon to the mesh |
getPolygonSize(index: number) → number | Returns the number of vertices in the polygon at the given index |
toMesh() → Mesh | Returns a Mesh instance representing the current object (identity conversion) |
optimize(_vertexElements: boolean, _toleranceControlPoint: number, _toleranceNormal: number, _toleranceUV: number) → Mesh | Not 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) → Mesh | Not implemented in the FOSS edition — throws at runtime. Performs a boolean operation defined by _op on meshes _a and _b with respective transforms |
isManifold() → boolean | Not implemented in the FOSS edition — throws at runtime. Returns true if manifold is set. |
union(_a: Mesh, _b: Mesh) → Mesh | Not 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) → Mesh | Not 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) → Mesh | Not implemented in the FOSS edition — throws at runtime. |
triangulate() → Mesh | Converts all polygons in the mesh to triangles and returns the mesh |
getBoundingBox() → any | Returns the bounding box. |
getEntityRendererKey() → any | Not 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[]): voidImageRenderOptions
...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(): MeshImageRenderOptions
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(): MeshImageRenderOptions
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): MeshImageRenderOptions
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): MeshImageRenderOptions
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): MeshImageRenderOptions
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
): VertexElementImageRenderOptions
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
): VertexElementUVImageRenderOptions
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}`);