Mesh
Pakotne: @aspose/3d (v24.12.0)
Mesh ir arī pieejama, izmantojot apakšceļa importu @aspose/3d/entities.
Mesh ir galvenais daudzstūru ģeometrijas vienība @aspose/3d.Tas saglabā virsotņu pozīcijas kā vadības punktus, definē daudzstūru sejas ar virsotņu indeksa sarakstiem un atbalsta vairākus virsotņu elementu datu slāņus, piemēram, normāles un UV koordinātas.
export class Mesh extends GeometryImageRenderOptions
A3DObject ← SceneObject ← Entity ← Geometry ← Mesh
ImageRenderOptions
Izveidojiet vienu trīsstūra režģi, pievienojiet to ainavai un saglabājiet kā 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)
Definē jaunu daudzstūra seju, izmantojot norādītos vadības punktu indeksus. Indeksi jāatsauc uz derīgām pozīcijām in controlPoints.
createPolygon(...indices: number[]): voidImageRenderOptions
...indices number[]
Trīs vai vairāk nulles bāzes indeksus uz controlPoints masīvu, pretēji pulksteņa rādītāja virzienam.
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()
Pārvērš visus ne trīsstūru daudzstūrus šajā režģī par trīsstūriem. Atgriež trīsstūrveida režģi (var būt tas pats instances vai jauns).
triangulate(): MeshImageRenderOptions
Mesh
Trīsstūrveida režģis.
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()
Atgriež tīklu kā `Mesh` instance. Lai `Mesh` objects šī ir identitātes operācija; metode ir nozīmīgāka primitīvu ģeometrijas tipiem, kas manto no `Geometry`.
```typescript
toMesh(): MeshImageRenderOptions
Mesh
Šī Mesh instance.
static union(a, b)
NOT IMPLEMENTED. Šī metode ir definēta API virsmā, bet izsauc Error('union is not implemented') izpildes laikā. To nevajadzētu izsaukt ražošanas kodā.
Izpilda loģisko apvienojumu starp diviem Mesh objektiem. Rezultātā ir abu ievades elementu apvienotais tilpums.
static union(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
Pirmais tīkla operands.
b Mesh
Otrais tīkla operands.
ImageRenderOptions
Mesh
Jauns mesh, kas attēlo apvienojumu no a un 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. Šī metode ir definēta API virsmā, bet izsauc Error('difference is not implemented') izpildes laikā. To nevajadzētu izsaukt ražošanas kodā.
Izpilda Boolea starpību, atņemot mesh tilpumu b no mesh a.
static difference(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
Bāzes Mesh.
b Mesh
Mesh, no kura atņemt a.
ImageRenderOptions
Mesh
Jauns mesh, kas attēlo a mīnus b.
ImageRenderOptions
const result = Mesh.difference(meshA, meshB);
console.log(Difference polygon count: ${result.polygonCount});
---
### static intersect(a, b)
**NOT IMPLEMENTED.** Šī metode ir definēta API virsmā, bet izsauc `Error('intersect is not implemented')` izpildes laikā. To nevajadzētu izsaukt ražošanas kodā.
Izpilda divu tīklu Boolea krustojumu. Rezultātā ir tikai pārklājošais tilpums.
```typescript
static intersect(a: Mesh, b: Mesh): MeshImageRenderOptions
a Mesh
Pirmais tīkla operands.
b Mesh
Otrais tīkla operands.
ImageRenderOptions
Mesh
Jauns tīkls, kas pārstāv krustpunktu starp a un b.
ImageRenderOptions
const overlap = Mesh.intersect(meshA, meshB);
console.log(Intersection polygon count: ${overlap.polygonCount});
---
### createElement(type, mapping?, reference?)
Izveido jaunu `VertexElement` datu slāni šim tīklam pielāgotām virsotnes atribūtiem.
```typescript
createElement(
type: VertexElementType,
mapping?: MappingMode,
reference?: ReferenceMode
): VertexElementImageRenderOptions
type VertexElementType
Virsotnes atribūta veids, ko izveidot (piemēram, VertexElementType.Normal).
mapping MappingMode (pēc izvēles)
Kā elementa dati tiek kartēti uz tīkla topoloģiju. Noklusējuma vērtība ir MappingMode.ControlPoint.
reference ReferenceMode (pēc izvēles)
Kā elementa indeksi atsaucas uz datu masīvu. Noklusējuma vērtība ir ReferenceMode.Direct.
ImageRenderOptions
VertexElement
Jaunizveidotais virsotnes elementa slānis.
createElementUV(mapping, mappingMode?, referenceMode?)
Izveido UV koordinātu slāni šajā režģī.
createElementUV(
mapping: TextureMapping,
mappingMode?: MappingMode,
referenceMode?: ReferenceMode
): VertexElementUVImageRenderOptions
mapping TextureMapping
UV kanāls, ko izveidot (piemēram, TextureMapping.Diffuse).
mappingMode MappingMode (pēc izvēles)
Kā UV koordinātas tiek kartētas uz virsotnēm.
referenceMode ReferenceMode (pēc izvēles)
Kā UV indeksa dati atsaucas uz UV masīvu.
ImageRenderOptions
VertexElementUV
Jaunizveidotais UV elementa slānis.
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}`);