Mesh
Paketas: @aspose/3d (v24.12.0)
Mesh taip pat prieinamas per sub‑kelio importą @aspose/3d/entities.
Mesh yra pagrindinė daugiakampių geometrijos struktūra, esanti @aspose/3d. Ji saugo viršūnių pozicijas kaip valdymo taškus, apibrėžia daugiakampių veidus pagal viršūnių indekso sąrašus ir palaiko kelis viršūnių elementų duomenų sluoksnius, tokius kaip normalių vektoriai ir UV koordinatės.
export class Mesh extends GeometryImageRenderOptions
A3DObject ← SceneObject ← Entity ← Geometry ← Mesh
ImageRenderOptions
Sukurkite vieną trikampio mesh, prijunkite jį prie scenos ir išsaugokite į 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)
Apibrėžia naują daugiakampio veidą naudojant pateiktus valdymo taškų indeksus. Indeksai turi nurodyti galiojančias pozicijas, esančias controlPoints.
createPolygon(...indices: number[]): voidImageRenderOptions
...indices number[]
Trijų arba daugiau nulinio pagrindo indeksų į controlPoints masyvą, prieš laikrodžio rodyklės sukimo tvarka.
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()
Paverčia visus netrikampius daugiakampius šiame mesh į trikampius. Grąžina trianguliuotą mesh (gali būti tas pats egzempliorius arba naujas).
triangulate(): MeshImageRenderOptions
Mesh
Trianguliuotas 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()
Grąžina tinklelį kaip `Mesh` egzempliorius. Skirta `Mesh` objektams tai yra identiškumo operacija; metodas yra prasmingesnis primityvių geometrijos tipų, kurie paveldi iš `Geometry`.
```typescript
toMesh(): MeshImageRenderOptions
Mesh
Ši mesh egzempliorius.
static union(a, b)
NOT IMPLEMENTED. Šis metodas apibrėžtas API sąsajoje, tačiau meta Error('union is not implemented') vykdymo metu. Nenaudokite jo gamybinėje kode.
Atlieka Boolean sujungimą dviejų mesh’ų. Rezultatas turi sujungtą abiejų įvestų tūrius.
static union(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
Pirmasis tinklo operandas.
b Mesh
Antrasis tinklo operandas.
ImageRenderOptions
Mesh
Naujas tinklelis, vaizduojantis sujungimą a ir 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. Šis metodas apibrėžtas API sąsajoje, tačiau meta Error('difference is not implemented') vykdymo metu. Nenaudokite jo gamybinėje kode.
Atlieka Boole’o skirtumą, atimant tinklelio b iš tinklelio a.
static difference(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
Pagrindinis mesh.
b Mesh
Tinklelis, iš kurio atimama a.
ImageRenderOptions
Mesh
Naujas tinklelis, atvaizduojantis a minus b.
ImageRenderOptions
const result = Mesh.difference(meshA, meshB);
console.log(Difference polygon count: ${result.polygonCount});
---
### static intersect(a, b)
**NOT IMPLEMENTED.** Šis metodas apibrėžtas API sąsajoje, tačiau meta `Error('intersect is not implemented')` vykdymo metu. Nenaudokite jo gamybinėje kode.
Atlieka Boolean sankirtą tarp dviejų tinklų. Rezultatas turi tik persidengiančią tūrį.
```typescript
static intersect(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
Pirmasis tinklo operandas.
b Mesh
Antrasis tinklo operandas.
ImageRenderOptions
Mesh
Naujas mesh, atspindintis sankirtą su a ir b.
ImageRenderOptions
const overlap = Mesh.intersect(meshA, meshB);
console.log(Intersection polygon count: ${overlap.polygonCount});
---
### createElement(type, mapping?, reference?)
Sukuria naują `VertexElement` duomenų sluoksnį šiame mesh'e, skirtą pasirinktiniams per-vertex atributams.
```typescript
createElement(
type: VertexElementType,
mapping?: MappingMode,
reference?: ReferenceMode
): VertexElementImageRenderOptions
type VertexElementType
Kuriamo vertex atributo tipas (pavyzdžiui, VertexElementType.Normal).
mapping MappingMode (pasirinktinai)
Kaip elemento duomenys susiejami su mesh topologija. Numatyta – MappingMode.ControlPoint.
reference ReferenceMode (pasirinktinai)
Kaip elemento indeksai nurodo duomenų masyvą. Numatyta – ReferenceMode.Direct.
ImageRenderOptions
VertexElement
Naujai sukurtas viršūnės elemento sluoksnis.
createElementUV(mapping, mappingMode?, referenceMode?)
Sukuria UV koordinatų sluoksnį šiame tinkle.
createElementUV(
mapping: TextureMapping,
mappingMode?: MappingMode,
referenceMode?: ReferenceMode
): VertexElementUVImageRenderOptions
mapping TextureMapping
Kuriamas UV kanalas (pavyzdžiui, TextureMapping.Diffuse).
mappingMode MappingMode (pasirinktinai)
Kaip UV koordinatės susiejamos su viršūnėmis.
referenceMode ReferenceMode (pasirinktinai)
Kaip UV indekso duomenys nurodo UV masyvą.
ImageRenderOptions
VertexElementUV
Nauja sukurtas UV elementų sluoksnis.
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}`);