Class Mesh
Pakke: @aspose/3d (v24.12.0)
Mesh er også tilgængelig via sub-path import @aspose/3d/entities.
Mesh er den primære polygongeometri‑enhed i @aspose/3d. Den gemmer vertexpositioner som kontrolpunkter, definerer polygonflader ved hjælp af lister af vertex‑indekser og understøtter flere lag af vertex‑elementdata såsom normaler og UV‑koordinater.
export class Mesh extends GeometryA3DObject ← SceneObject ← Entity ← Geometry ← Mesh
Byg et enkelt trekants‑mesh, tilknyt det til scenen, og gem til 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
controlPoints | Vector4[] | Vertexpositionerne for mesh‑en. Hvert punkt bruger homogene koordinater (x, y, z, w). Tilføj punkter ved at skubbe dem ind i dette array, før du definerer polygoner. |
polygonCount | number | Skrivebeskyttet. Antallet af polygoner (flader), der i øjeblikket er defineret på mesh‑en. |
polygons | number[][] | Skrivebeskyttet. Polygonindekstabelen. Hver post er et array af kontrolpunkt‑indekser, der definerer én flade. |
edges | number[] | Kantlisten, brugt til markering af hårde kanter og vægtning af folder. |
vertexElements | VertexElement[] | Samlingen af vertex‑elementlag (normaler, UV‑er, vertex‑farver osv.), der er knyttet til denne mesh. |
visible | boolean | Om mesh‑en bliver gengivet. Standard er true. |
castShadows | boolean | Om mesh‑en kaster skygger i understøttede renderere. Standard er true. |
receiveShadows | boolean | Om mesh‑en modtager skygger fra andre objekter. Standard er true. |
createPolygon(…indices)
Definerer en ny polygonflade ved hjælp af de angivne kontrolpunkt‑indekser. Indekser skal referere til gyldige positioner i controlPoints.
createPolygon(...indices: number[]): void...indices number[]
Tre eller flere nulbaserede indekser i controlPoints array, i mod-ur-rotationens viklingsorden.
void
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()
Konverterer alle ikke‑trekantede polygoner i dette mesh til trekanter. Returnerer det triangulerede mesh (kan være den samme instans eller en ny).
triangulate(): MeshMesh
Det triangulerede mesh.
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),
);
mesh.createPolygon(0, 1, 2, 3); // quad
const triangulated = mesh.triangulate();
console.log(`Polygons after triangulation: ${triangulated.polygonCount}`); // 2
toMesh()
Returnerer mesh’en som en Mesh instans. For Mesh objekter er dette en identitetsoperation; metoden er mere meningsfuld på primitive geometrityper, der arver fra Geometry.
toMesh(): MeshMesh
Denne mesh-instans.
static union(a, b)
NOT IMPLEMENTED. Denne metode er defineret i API’et, men kaster Error('union is not implemented') ved kørsel. Kald den ikke i produktionskode.
Udfører en boolesk union af to mesh’er. Resultatet indeholder den samlede volumen af begge input.
static union(a: Mesh, b: Mesh): Mesha Mesh
Den første mesh-operand.
b Mesh
Den anden mesh-operand.
Mesh
Et nyt mesh, der repræsenterer unionen af a og b.
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. Denne metode er defineret i API’et, men kaster Error('difference is not implemented') ved kørsel. Kald den ikke i produktionskode.
Udfører en boolesk forskel, hvor volumen af mesh trækkes fra b fra mesh a.
static difference(a: Mesh, b: Mesh): Mesha Mesh
Den grundlæggende mesh.
b Mesh
Mesh’en, der skal trækkes fra a.
Mesh
Et nyt mesh, der repræsenterer a minus b.
import { Mesh } from '@aspose/3d/entities';
const result = Mesh.difference(meshA, meshB);
console.log(`Difference polygon count: ${result.polygonCount}`);static intersect(a, b)
NOT IMPLEMENTED. Denne metode er defineret i API’et, men kaster Error('intersect is not implemented') ved kørsel. Kald den ikke i produktionskode.
Udfører en boolesk intersection af to mesh’er. Resultatet indeholder kun det overlappende volumen.
static intersect(a: Mesh, b: Mesh): Mesha Mesh
Den første mesh-operand.
b Mesh
Den anden mesh-operand.
Mesh
Et nyt mesh, der repræsenterer skæringen af a og b.
import { Mesh } from '@aspose/3d/entities';
const overlap = Mesh.intersect(meshA, meshB);
console.log(`Intersection polygon count: ${overlap.polygonCount}`);createElement(type, mapping?, reference?)
Opretter en ny VertexElement datalag på dette mesh til brugerdefinerede per-vertex-attributter.
createElement(
type: VertexElementType,
mapping?: MappingMode,
reference?: ReferenceMode
): VertexElementtype VertexElementType
Typen af vertex-attribut, der skal oprettes (for eksempel, VertexElementType.Normal).
mapping MappingMode (valgfri)
Hvordan elementdataene kortlægges til mesh-topologien. Standard er MappingMode.ControlPoint.
reference ReferenceMode (valgfri)
Hvordan elementindekserne refererer til dataarrayet. Standard er ReferenceMode.Direct.
VertexElement
Det nyoprettede vertex-elementlag.
createElementUV(mapping, mappingMode?, referenceMode?)
Opretter et UV-koordinatlag på dette mesh.
createElementUV(
mapping: TextureMapping,
mappingMode?: MappingMode,
referenceMode?: ReferenceMode
): VertexElementUVmapping TextureMapping
UV-kanalen, der skal oprettes (for eksempel, TextureMapping.Diffuse).
mappingMode MappingMode (valgfri)
Hvordan UV-koordinater kortlægges til vertexer.
referenceMode ReferenceMode (valgfri)
Hvordan UV-indeksdata refererer til UV-arrayet.
VertexElementUV
Det nyoprettede UV-elementlag.
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}`);