Class Mesh

Paket: @aspose/3d (v24.12.0)

Mesh är också tillgänglig via sub‑sökvägsimport @aspose/3d/entities.

Mesh är den primära polygongeometri‑enheten i @aspose/3d. Den lagrar vertexpositioner som kontrollpunkter, definierar polygonytor med listor av vertexindex och stöder flera lager av vertex‑elementdata såsom normaler och UV‑koordinater.

export class Mesh extends Geometry

ImageRenderOptions

A3DObject ← SceneObject ← Entity ← Geometry ← Mesh

ImageRenderOptions

Bygg ett enda triangel‑mesh, fäst det i scenen och spara till 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

ImageRenderOptionsImageRenderOptionsImageRenderOptions
controlPointsVector4[]Vertexpositionerna för meshen. Varje punkt använder homogena koordinater (x, y, z, w). Lägg till punkter genom att skjuta in dem i denna array innan polygoner definieras.
polygonCountnumberSkrivskyddad. Antalet polygoner (ytor) som för närvarande är definierade på meshen.
polygonsnumber[][]Skrivskyddad. Polygonindex‑tabellen. Varje post är en array av kontrollpunkt‑index som definierar en yta.
edgesnumber[]Kantlistan, som används för hårda kantmarkeringar och viktningsvärden för veck.
vertexElementsVertexElement[]Samlingen av vertex‑elementlager (normaler, UV‑koordinater, vertex‑färger osv.) som är kopplade till denna mesh.
visiblebooleanOm meshen renderas. Standardvärdet är true.
castShadowsbooleanOm meshen kastar skuggor i stödjade renderare. Standardvärdet är true.
receiveShadowsbooleanOm meshen tar emot skuggor från andra objekt. Standardvärdet är true.

ImageRenderOptions

createPolygon(…indices)

Definierar en ny polygonyta med de angivna kontrollpunkt‑indexen. Indexen måste referera till giltiga positioner i controlPoints.

createPolygon(...indices: number[]): void

ImageRenderOptions

...indices number[]

Tre eller fler nollbaserade index i controlPoints array, i moturs varvordning.

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()

Omvandlar alla icke‑triangulära polygoner i detta mesh till trianglar. Returnerar det triangulerade meshet (kan vara samma instans eller en ny).

triangulate(): Mesh

ImageRenderOptions

Mesh

Det triangulerade meshet.

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()

Returnerar mesh som en Mesh instans. För Mesh objekt är detta en identitetsoperation; metoden är mer meningsfull på primitiva geometrityper som ärver från Geometry.

toMesh(): Mesh

ImageRenderOptions

Mesh

Denna mesh‑instans.


static union(a, b)

NOT IMPLEMENTED. Denna metod är definierad i API-ytan men kastar Error('union is not implemented') vid körning. Anropa den inte i produktionskod.

Utför en boolesk union av två mesh. Resultatet innehåller den kombinerade volymen av båda indata.

static union(a: Mesh, b: Mesh): Mesh

ImageRenderOptions

a Mesh

Den första mesh-operanden.

b Mesh

Den andra mesh-operanden.

ImageRenderOptions

Mesh

Ett nytt nät som representerar unionen av a och 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. Denna metod är definierad i API-ytan men kastar Error('difference is not implemented') vid körning. Anropa den inte i produktionskod.

Utför en boolesk differens, subtraherar volymen av nätet b från nätet a.

static difference(a: Mesh, b: Mesh): Mesh

ImageRenderOptions

a Mesh

Bas‑mesh.

b Mesh

Nätet att subtrahera från a.

ImageRenderOptions

Mesh

Ett nytt nät som representerar 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. Denna metod är definierad i API-ytan men kastar Error('intersect is not implemented') vid körning. Anropa den inte i produktionskod.

Utför en boolesk skärning av två meshar. Resultatet innehåller endast den överlappande volymen.

static intersect(a: Mesh, b: Mesh): Mesh

ImageRenderOptions

a Mesh

Den första mesh-operanden.

b Mesh

Den andra mesh-operanden.

ImageRenderOptions

Mesh

Ett nytt mesh som representerar skärningen av a och 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?)

Skapar ett nytt VertexElement dataskikt på detta mesh för anpassade per-vertex-attribut.

createElement(
  type: VertexElementType,
  mapping?: MappingMode,
  reference?: ReferenceMode
): VertexElement

ImageRenderOptions

type VertexElementType

Typen av vertex-attribut att skapa (till exempel, VertexElementType.Normal).

mapping MappingMode (valfritt)

Hur elementdata mappas till meshens topologi. Standardvärde är MappingMode.ControlPoint.

reference ReferenceMode (valfritt)

Hur elementindex refererar till dataarrayen. Standardvärde är ReferenceMode.Direct.

ImageRenderOptions

VertexElement

Det nyss skapade vertex-elementlagret.


createElementUV(mapping, mappingMode?, referenceMode?)

Skapar ett UV-koordinatlager på detta mesh.

createElementUV(
  mapping: TextureMapping,
  mappingMode?: MappingMode,
  referenceMode?: ReferenceMode
): VertexElementUV

ImageRenderOptions

mapping TextureMapping

UV-kanalen att skapa (till exempel, TextureMapping.Diffuse).

mappingMode MappingMode (valfritt)

Hur UV-koordinater mappas till vertexar.

referenceMode ReferenceMode (valfritt)

Hur UV-indexdata refererar till UV-arrayen.

ImageRenderOptions

VertexElementUV

Det nyss skapade UV‑elementlagret.

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}`);
 Svenska