Mesh
Balík: @aspose/3d (v24.12.0)
Mesh je tiež dostupný prostredníctvom importu podcesty @aspose/3d/entities.
Mesh je primárna entita polygonovej geometrie v @aspose/3d. Ukladá pozície vrcholov ako kontrolné body, definuje polygonové plochy pomocou zoznamov indexov vrcholov a podporuje viacero vrstiev dát elementov vrcholov, ako sú normály a UV súradnice.
export class Mesh extends GeometryImageRenderOptions
A3DObject ← SceneObject ← Entity ← Geometry ← Mesh
ImageRenderOptions
Vytvorte jedinečnú trojuholníkovú sieť, pripojte ju k scéne a uložte do formátu 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)
Definuje novú polygonovú plochu pomocou poskytnutých indexov kontrolných bodov. Indexy musia odkazovať na platné pozície v controlPoints.
createPolygon(...indices: number[]): voidImageRenderOptions
...indices number[]
Tri alebo viac nulovo založených indexov do controlPoints pole, v smere proti smeru hodinových ručičiek.
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()
Prevedie všetky ne-triangularne polygóny v tejto sieti na trojuholníky. Vráti triangulovanú sieť (môže to byť rovnaká inštancia alebo nová).
triangulate(): MeshImageRenderOptions
Mesh
Triangulovaná sieť.
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()
Vráti sieť ako `Mesh` inštancia. Pre `Mesh` objektov je to operácia identity; metóda má väčší zmysel pri primitívnych geometrických typoch, ktoré dedia od `Geometry`.
```typescript
toMesh(): MeshImageRenderOptions
Mesh
Táto inštancia mesh.
static union(a, b)
NOT IMPLEMENTED. Táto metóda je definovaná v rozhraní API, ale vyhadzuje Error('union is not implemented') v čase behu. Nepoužívajte ju v produkčnom kóde.
Vykoná Booleovú zjednotenie dvoch mesh-ov. Výsledok obsahuje kombinovaný objem oboch vstupov.
static union(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
Prvý operand mriežky.
b Mesh
Druhý operand mriežky.
ImageRenderOptions
Mesh
Nový mesh predstavujúci zjednotenie a a 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. Táto metóda je definovaná v rozhraní API, ale vyhadzuje Error('difference is not implemented') v čase behu. Nepoužívajte ju v produkčnom kóde.
Vykoná Booleovú rozdielovú operáciu, odčítajúc objem mesh b od mesh a.
static difference(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
Základný mesh.
b Mesh
Mesh, z ktorého sa odčítava a.
ImageRenderOptions
Mesh
Nový mesh predstavujúci a mínus b.
ImageRenderOptions
const result = Mesh.difference(meshA, meshB);
console.log(Difference polygon count: ${result.polygonCount});
---
### static intersect(a, b)
**NOT IMPLEMENTED.** Táto metóda je definovaná v rozhraní API, ale vyhadzuje `Error('intersect is not implemented')` v čase behu. Nepoužívajte ju v produkčnom kóde.
Vykoná Booleovú prienik dvoch mriežok. Výsledok obsahuje iba prekrývajúci sa objem.
```typescript
static intersect(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
Prvý operand mriežky.
b Mesh
Druhý operand mriežky.
ImageRenderOptions
Mesh
Nová sieť predstavujúca prienik a a b.
ImageRenderOptions
const overlap = Mesh.intersect(meshA, meshB);
console.log(Intersection polygon count: ${overlap.polygonCount});
---
### createElement(type, mapping?, reference?)
Vytvorí novú `VertexElement` dátovú vrstvu na tejto sieti pre vlastné atribúty na vrchole.
```typescript
createElement(
type: VertexElementType,
mapping?: MappingMode,
reference?: ReferenceMode
): VertexElementImageRenderOptions
type VertexElementType
Typ atribútu vrchola, ktorý sa má vytvoriť (napríklad, VertexElementType.Normal).
mapping MappingMode (voliteľné)
Ako sú dáta prvku mapované na topológiu siete. Predvolene je MappingMode.ControlPoint.
reference ReferenceMode (voliteľné)
Ako indexy prvkov odkazujú na dátové pole. Predvolene je ReferenceMode.Direct.
ImageRenderOptions
VertexElement
Novovytvorená vrstva prvku vrchola.
createElementUV(mapping, mappingMode?, referenceMode?)
Vytvorí vrstvu UV súradníc na tejto sieti.
createElementUV(
mapping: TextureMapping,
mappingMode?: MappingMode,
referenceMode?: ReferenceMode
): VertexElementUVImageRenderOptions
mapping TextureMapping
UV kanál, ktorý sa má vytvoriť (napríklad, TextureMapping.Diffuse).
mappingMode MappingMode (voliteľné)
Ako sa UV súradnice mapujú na vrcholy.
referenceMode ReferenceMode (voliteľné)
Ako UV indexové dáta odkazujú na UV pole.
ImageRenderOptions
VertexElementUV
Novovytvorená vrstva UV elementu.
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}`);