Class 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
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|
controlPoints | Vector4[] | De vertexposities van de mesh. Elk punt gebruikt homogene coördinaten (x, y, z, w). Voeg punten toe door ze naar deze array te pushen voordat je polygonen definieert. |
polygonCount | number | Alleen-lezen. Het aantal polygonen (vlakken) dat momenteel op de mesh is gedefinieerd. |
polygons | number[][] | Alleen-lezen. De polygoon‑indextabel. Elke invoer is een array van controlepunt‑indices die één vlak definiëren. |
edges | number[] | De randlijst, gebruikt voor hard‑edge markering en vouwgewicht. |
vertexElements | VertexElement[] | De verzameling vertex‑elementlagen (normalen, UV’s, vertexkleuren, enz.) die aan deze mesh zijn gekoppeld. |
visible | boolean | Of de mesh wordt gerenderd. Standaard is true. |
castShadows | boolean | Of de mesh schaduwen werpt in ondersteunde renderers. Standaard is true. |
receiveShadows | boolean | Of de mesh schaduwen ontvangt van andere objecten. Standaard is true. |
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
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()
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.
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
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. 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.
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
import { Mesh } from '@aspose/3d/entities';
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.
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}`);